Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Teknik Salin Array Java: Panduan Lengkap

Teknik Salin Array Java

Pelajari cara menyalin array satu dimensi dan dua dimensi di Java menggunakan assignment, loops, System.arraycopy, Arrays.copyOfRange, dan lebih banyak lagi, dengan contoh yang jelas dan tips best practices.


1. Menyalin dengan Operator Assignment

Menugaskan satu variabel array ke variabel lain adalah metode paling sederhana. Ini menyalin referensi, bukan data.

class Main { public static void main(String[] args) { int [] numbers = {1, 2, 3, 4, 5, 6}; int [] positiveNumbers = numbers; // reference copy for (int number: positiveNumbers) { System.out.print(number + ", "); } } }

Output:

1, 2, 3, 4, 5, 6

Kedua numbers dan positiveNumbers sekarang menunjuk ke objek array yang sama. Mengubah satu elemen memengaruhi yang lain:

class Main { public static void main(String[] args) { int [] numbers = {1, 2, 3, 4, 5, 6}; int [] positiveNumbers = numbers; numbers[0] = -1; for (int number: positiveNumbers) { System.out.print(number + ", "); } } }

Output:

-1, 2, 3, 4, 5, 6

Ini adalah shallow copy. Untuk menghindari efek samping yang tidak diinginkan, gunakan teknik deep copy.


2. Deep Copy dengan Loop

Mengiterasi setiap elemen dan menetapkannya ke array baru menciptakan salinan independen.

import java.util.Arrays; class Main { public static void main(String[] args) { int [] source = {1, 2, 3, 4, 5, 6}; int [] destination = new int[source.length]; for (int i = 0; i < source.length; ++i) { destination[i] = source[i]; } System.out.println(Arrays.toString(destination)); } }

Output:

[1, 2, 3, 4, 5, 6]

Karena source dan destination adalah objek yang berbeda, modifikasi pada satu tidak memengaruhi yang lain.


3. Menggunakan System.arraycopy()

Metode System.arraycopy Java menawarkan cara bawaan yang cepat untuk menyalin segmen array.

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

Contoh:

import java.util.Arrays; class Main { public static void main(String[] args) { int[] n1 = {2, 3, 12, 4, 12, -2}; int[] n2 = new int[n1.length]; System.arraycopy(n1, 0, n2, 0, n1.length); System.out.println("n2 = " + Arrays.toString(n2)); int[] n3 = new int[5]; System.arraycopy(n1, 2, n3, 1, 2); System.out.println("n3 = " + Arrays.toString(n3)); } }

Output:

n2 = [2, 3, 12, 4, 12, -2] n3 = [0, 12, 4, 0, 0]

4. Menyalin dengan Arrays.copyOfRange()

Saat Anda perlu array baru yang berisi irisan tertentu, Arrays.copyOfRange adalah pilihan yang ideal.

import java.util.Arrays; class ArraysCopy { public static void main(String[] args) { int[] source = {2, 3, 12, 4, 12, -2}; int[] destination1 = Arrays.copyOfRange(source, 0, source.length); System.out.println("destination1 = " + Arrays.toString(destination1)); int[] destination2 = Arrays.copyOfRange(source, 2, 5); System.out.println("destination2 = " + Arrays.toString(destination2)); } }

Output:

destination1 = [2, 3, 12, 4, 12, -2] destination2 = [12, 4, 12]

5. Menyalin Array 2D dengan Loop

Deep copying array dua dimensi memerlukan menyalin setiap baris secara individual.

import java.util.Arrays; class Main { public static void main(String[] args) { int[][] source = { {1, 2, 3, 4}, {5, 6}, {0, 2, 42, -4, 5} }; int[][] destination = new int[source.length][]; for (int i = 0; i < destination.length; ++i) { destination[i] = new int[source[i].length]; for (int j = 0; j < destination[i].length; ++j) { destination[i][j] = source[i][j]; } } System.out.println(Arrays.deepToString(destination)); } }

Output:

[[1, 2, 3, 4], [5, 6], [0, 2, 42, -4, 5]]

6. Salin Array 2D dengan System.arraycopy()

Ganti inner loop dengan arraycopy untuk kode yang lebih bersih.

import java.util.Arrays; class Main { public static void main(String[] args) { int[][] source = { {1, 2, 3, 4}, {5, 6}, {0, 2, 42, -4, 5} }; int[][] destination = new int[source.length][]; for (int i = 0; i < source.length; ++i) { destination[i] = new int[source[i].length]; System.arraycopy(source[i], 0, destination[i], 0, destination[i].length); } System.out.println(Arrays.deepToString(destination)); } }

Output:

[[1, 2, 3, 4], [5, 6], [0, 2, 42, -4, 5]]

java

  1. Menguasai Array C#: Deklarasi, Inisialisasi, dan Operasi
  2. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  3. Komentar Java: Tipe, Penggunaan, dan Best Practices
  4. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  5. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  6. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  7. Array C++ Dibongkar: Deklarasi, Inisialisasi, dan Teknik Pointer
  8. Menguasai Alokasi Array Dinamis C++: Panduan Praktis dengan Contoh Kode
  9. Tutorial Array Java: Deklarasi, Pembuatan, dan Inisialisasi – Kode Contoh
  10. Membuat Array Objek di Java: Panduan Langkah demi Langkah