Rumah > Java > javaTutorial > teks badan

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

Barbara Streisand
Lepaskan: 2024-10-30 19:27:02
asal
1002 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!