Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mencipta Salinan Dalam Tatasusunan Dua Dimensi di Jawa?

Bagaimana untuk Mencipta Salinan Dalam Tatasusunan Dua Dimensi di Jawa?

DDD
DDDasal
2024-11-01 06:18:02360semak imbas

How to Create a Deep Copy of a Two-Dimensional Array in Java?

Menyalin Tatasusunan Dua Dimensi dalam Java

Menyalin tatasusunan berbilang dimensi dalam Java boleh menjadi rumit, kerana memberikan satu tatasusunan kepada tatasusunan yang lain hanya mencipta rujukan kepada data asal dan bukannya salinan sebenar. Untuk mencipta pendua tulen, anda perlu memperuntukkan memori baharu dan menyalin elemen secara individu.

Dalam kes anda, anda mempunyai dua kaedah, old() dan keepold(), untuk menyalin tatasusunan semasa ke lama dan sebaliknya sebaliknya. Walau bagaimanapun, apabila anda mengemas kini semasa, perubahan juga ditunjukkan dalam lama kerana kedua-duanya merujuk kepada data asas yang sama.

Untuk membuat salinan sebenar, anda boleh menggunakan langkah berikut:

  1. Buat Tatasusunan Baharu: Peruntukkan tatasusunan dua dimensi baharu dengan dimensi yang sama seperti yang asal.
  2. Salin Elemen: Lelaran melalui tatasusunan asal dan tetapkan setiap elemen ke kedudukan yang sepadan dalam tatasusunan baharu.

Menggunakan streams API (Java 8 ), anda boleh memudahkan proses ini:

<code class="java">int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);</code>

Baris ini menggunakan peta() kaedah untuk mencipta tatasusunan baharu bagi setiap baris, kemudian kaedah klon() untuk menyalin setiap baris, dan akhirnya kaedah toArray() untuk mencipta tatasusunan dua dimensi baharu daripada baris yang diklon.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Dalam Tatasusunan Dua Dimensi 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