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!