Rumah  >  Artikel  >  Java  >  Bagaimanakah anda membuat salinan sebenar tatasusunan dua dimensi di Jawa tanpa akibat yang tidak diingini?

Bagaimanakah anda membuat salinan sebenar tatasusunan dua dimensi di Jawa tanpa akibat yang tidak diingini?

Barbara Streisand
Barbara Streisandasal
2024-10-30 19:27:02978semak imbas

How do you create a true copy of a two-dimensional array in Java without unintended consequences?

Menyalin Tatasusunan Dua Dimensi dengan Berkesan dalam Java

Apabila bekerja dengan tatasusunan dua dimensi, selalunya perlu mencipta salinan tatasusunan asal untuk mengekalkan nilai asalnya. Walau bagaimanapun, tugasan langsung seperti lama = semasa boleh membawa kepada akibat yang tidak diingini.

Memahami Tugasan Tatasusunan Java

Dalam Java, tatasusunan ialah objek, dan tugasan antara tatasusunan ialah rujukan kepada tatasusunan asas yang sama. Oleh itu, mengemas kini satu tatasusunan mempengaruhi yang lain kerana kedua-duanya menunjuk kepada data yang sama.

Kaedah Penyalinan Salah

Kaedah yang disediakan, old() dan keepold(), hanya memberikan rujukan kepada tatasusunan. Akibatnya, apabila semasa dikemas kini selepas memanggil old(), perubahan juga ditunjukkan dalam old. Begitu juga, selepas memanggil keepold(), semasa menjadi rujukan kepada lama dan sebarang kemas kini kepada semasa kemas kini lama.

Penyalinan Berkesan dengan Streams API (Java 8 )

Untuk mencipta salinan sebenar tatasusunan, perlu melakukan salinan dalam. API aliran yang diperkenalkan dalam Java 8 menyediakan cara yang cekap untuk mencapai ini menggunakan kod berikut:

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

Di sini, setiap baris tatasusunan input (matriks dalam contoh ini) diklon menggunakan map(int[] ::clone), mencipta tatasusunan baharu untuk setiap baris. Aliran tatasusunan klon yang terhasil kemudian ditukar kembali kepada tatasusunan dua dimensi menggunakan toArray(int[][]::new). Proses ini memastikan kedua-dua salinan dan tatasusunan asal adalah berbeza dan boleh diubah suai secara bebas.

Atas ialah kandungan terperinci Bagaimanakah anda membuat salinan sebenar tatasusunan dua dimensi di Jawa tanpa akibat yang tidak diingini?. 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