Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menyalin Array 2D dengan Cekap dan Selamat di Jawa?

Bagaimana untuk Menyalin Array 2D dengan Cekap dan Selamat di Jawa?

DDD
DDDasal
2024-11-01 12:42:02266semak imbas

How to Efficiently and Safely Copy a 2D Array in Java?

Cara Menyalin Tatasusunan 2D dalam Java

Soalan:

Anda mempunyai 2D tatasusunan dipanggil matriks yang anda ingin salin ke dalam pembolehubah tempatan dalam kaedah untuk mengedit. Apakah cara yang paling berkesan dan kalis ralat untuk membuat salinan lengkap?

Jawapan:

Terdapat dua cara yang disyorkan untuk menyalin tatasusunan 2D dalam Java:

Menggunakan klon():

Kaedah klon() mencipta tatasusunan baharu dengan saiz dan kandungan yang sama seperti yang asal. Untuk tatasusunan 2D, anda perlu mengklon setiap baris individu:

<code class="java">int[][] myInt = new int[matrix.length][];
for (int i = 0; i < matrix.length; i++)
    myInt[i] = matrix[i].clone();</code>

Menggunakan System.arraycopy():

Kaedah System.arraycopy() juga boleh digunakan untuk menyalin tatasusunan 2D. Ia memerlukan mencipta tatasusunan baharu dan menyalin setiap elemen secara manual:

<code class="java">int[][] myInt = new int[matrix.length][];
for (int i = 0; i < matrix.length; i++) {
  int[] aMatrix = matrix[i];
  int aLength = aMatrix.length;
  myInt[i] = new int[aLength];
  System.arraycopy(aMatrix, 0, myInt[i], 0, aLength);
}</code>

Kelebihan:

Kedua-dua kaedah lebih pantas dan kurang terdedah kepada ralat berbanding menyalin tatasusunan secara manual. System.arraycopy() amat cekap kerana ia dilaksanakan dalam kod asli.

Nota:

Dalam sesetengah kes, anda mungkin hanya memerlukan salinan cetek tatasusunan , di mana elemen yang diubah suai dalam salinan dicerminkan dalam tatasusunan asal. Untuk salinan cetek, anda hanya boleh menetapkan tatasusunan secara langsung, cth., int[][] myInt = matriks;. Walau bagaimanapun, ini tidak disyorkan untuk tujuan penyuntingan.

Atas ialah kandungan terperinci Bagaimana untuk Menyalin Array 2D dengan Cekap dan Selamat di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn