Rumah >Java >javaTutorial >Bagaimanakah Anda Menduakan Tatasusunan 2D dengan Cekap di Jawa?

Bagaimanakah Anda Menduakan Tatasusunan 2D dengan Cekap di Jawa?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 07:23:02399semak imbas

How Do You Efficiently Duplicate a 2D Array in Java?

Mendua Tatasusunan Dua Dimensi dalam Java

Apabila memanipulasi tatasusunan berbilang dimensi dalam Java, keperluan untuk mencipta salinan tatasusunan sedia ada sering timbul. Memahami pendekatan optimum untuk menyalin tatasusunan sedemikian adalah penting untuk mengekalkan integriti data dan mengelakkan perangkap.

Dalam senario yang diberikan, tatasusunan 2D integer, matriks, akan disalin ke dalam pembolehubah tempatan, myInt, untuk menyunting tujuan. Walaupun pendekatan manual boleh dilakukan, ia boleh terdedah kepada ralat dan tidak cekap.

Teknik Salin

Sebaliknya, Java menawarkan dua teknik yang disyorkan untuk menyalin tatasusunan 2D: menggunakan clone() atau System.arraycopy ().

Menggunakan klon()

Kaedah klon() mencipta salinan cetek tatasusunan, di mana tatasusunan asal dan salinan merujuk elemen asas yang sama. Untuk tatasusunan 2D seperti matriks, ini melibatkan:

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

Pendekatan ini mudah tetapi hanya mencipta salinan rujukan, bukan elemen itu sendiri. Jika mana-mana elemen dalam matriks diubah suai, elemen yang sepadan dalam myInt akan terjejas juga.

Menggunakan System.arraycopy()

Kaedah System.arraycopy() melakukan salinan dalam, menyalin nilai sebenar unsur-unsur dan bukannya rujukan sahaja. Untuk tatasusunan 2D:

<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>

Kaedah ini memerlukan lebih sedikit kerja kerana ia mencipta tatasusunan baharu untuk setiap baris, tetapi ia memastikan myInt ialah salinan bebas. Sebarang pengubahsuaian yang dibuat pada myInt tidak akan menjejaskan matriks.

Ringkasan

Walaupun menyalin tatasusunan 2D secara manual adalah mungkin, adalah sangat disyorkan untuk menggunakan kaedah klon() atau System.arraycopy() untuk kecekapan , ketepatan dan kemudahan. Ini memastikan tatasusunan yang disalin (myInt) diasingkan dengan betul daripada tatasusunan asal (matriks), membenarkan pengubahsuaian bebas tanpa risiko kesan sampingan yang tidak diingini.

Atas ialah kandungan terperinci Bagaimanakah Anda Menduakan Tatasusunan 2D dengan Cekap 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