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

Java Salin Array

Java Salin Array

Dalam tutorial ini, Anda akan belajar tentang berbagai cara yang dapat Anda gunakan untuk menyalin array (baik satu dimensi dan dua dimensi) di Java dengan bantuan contoh.

Di Java, kita dapat menyalin satu array ke array lain. Ada beberapa teknik yang dapat Anda gunakan untuk menyalin array di Java.


1. Menyalin Array Menggunakan Operator Tugas

Mari kita ambil contoh,

class Main {
    public static void main(String[] args) {
       
        int [] numbers = {1, 2, 3, 4, 5, 6};
        int [] positiveNumbers = numbers;    // copying arrays

        for (int number: positiveNumbers) {
            System.out.print(number + ", ");
        }
    }
}

Keluaran :

1, 2, 3, 4, 5, 6

Pada contoh di atas, kita telah menggunakan operator penugasan (= ) untuk menyalin larik bernama numbers ke array lain bernama positiveNumbers .

Teknik ini adalah yang paling mudah dan berhasil juga. Namun, ada masalah dengan teknik ini. Jika kita mengubah elemen dari satu array, elemen yang sesuai dari array lain juga berubah. Misalnya,

class Main {
    public static void main(String[] args) {
      
        int [] numbers = {1, 2, 3, 4, 5, 6};
        int [] positiveNumbers = numbers;    // copying arrays
      
        // change value of first array
        numbers[0] = -1;

        // printing the second array
        for (int number: positiveNumbers) {
            System.out.print(number + ", ");
        }
    }
}

Keluaran :

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

Di sini, kita dapat melihat bahwa kita telah mengubah satu nilai dari angka Himpunan. Saat kita mencetak positiveNumbers array, kita dapat melihat bahwa nilai yang sama juga berubah.

Itu karena kedua array merujuk ke objek array yang sama. Ini karena salinannya yang dangkal. Untuk mempelajari lebih lanjut tentang salinan dangkal, kunjungi salinan dangkal.

Sekarang, untuk membuat objek array baru saat menyalin array, kita membutuhkan salinan dalam daripada salinan dangkal.


2. Menggunakan Konstruksi Perulangan untuk Menyalin Array

Mari kita ambil contoh:

import java.util.Arrays;

class Main {
    public static void main(String[] args) {
      
        int [] source = {1, 2, 3, 4, 5, 6};
        int [] destination = new int[6];

        // iterate and copy elements from source to destination
        for (int i = 0; i < source.length; ++i) {
            destination[i] = source[i];
        }
      
         // converting array to string
        System.out.println(Arrays.toString(destination));
    }
}

Keluaran :

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

Pada contoh di atas, kami telah menggunakan for loop untuk beralih melalui setiap elemen dari array sumber. Dalam setiap iterasi, kami menyalin elemen dari sumber larik ke tujuan larik.

Di sini, larik sumber dan tujuan merujuk ke objek yang berbeda (salinan dalam). Oleh karena itu, jika elemen dari satu array diubah, elemen yang sesuai dari array lain tidak berubah.

Perhatikan pernyataannya,

System.out.println(Arrays.toString(destination));

Di sini, metode toString() digunakan untuk mengubah array menjadi string. Untuk mempelajari lebih lanjut, kunjungi metode toString() (dokumentasi resmi Java).


3. Menyalin Array Menggunakan metode arraycopy()

Di Java, kelas Sistem berisi metode bernama arraycopy() untuk menyalin array. Metode ini adalah pendekatan yang lebih baik untuk menyalin array daripada dua metode di atas.

arraycopy() metode ini memungkinkan Anda untuk menyalin bagian tertentu dari larik sumber ke larik tujuan. Misalnya,

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

Di sini,

Mari kita ambil contoh:

// To use Arrays.toString() method
import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        int[] n1 = {2, 3, 12, 4, 12, -2};
      
        int[] n3 = new int[5];

        // Creating n2 array of having length of n1 array
        int[] n2 = new int[n1.length];
      
        // copying entire n1 array to n2
        System.arraycopy(n1, 0, n2, 0, n1.length);
        System.out.println("n2 = " + Arrays.toString(n2));  
      
        // copying elements from index 2 on n1 array
        // copying element to index 1 of n3 array
        // 2 elements will be copied
        System.arraycopy(n1, 2, n3, 1, 2);
        System.out.println("n3 = " + Arrays.toString(n3));  
    }
}

Keluaran :

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

Pada contoh di atas, kami telah menggunakan arraycopy() metode,

Seperti yang Anda lihat, nilai awal default elemen int jenis larik adalah 0.


4. Menyalin Array Menggunakan metode copyOfRange()

Kita juga bisa menggunakan metode copyOfRange() yang didefinisikan di kelas Java Arrays untuk menyalin array. Misalnya,

// To use toString() and copyOfRange() method
import java.util.Arrays;

class ArraysCopy {
    public static void main(String[] args) {
      
        int[] source = {2, 3, 12, 4, 12, -2};
      
        // copying entire source array to destination
        int[] destination1 = Arrays.copyOfRange(source, 0, source.length);      
        System.out.println("destination1 = " + Arrays.toString(destination1)); 
      
        // copying from index 2 to 5 (5 is not included) 
        int[] destination2 = Arrays.copyOfRange(source, 2, 5); 
        System.out.println("destination2 = " + Arrays.toString(destination2));   
    }
}

Keluaran

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

Pada contoh di atas, perhatikan baris,

int[] destination1 = Arrays.copyOfRange(source, 0, source.length);

Di sini, kita dapat melihat bahwa kita sedang membuat destination1 array dan menyalin sumber array untuk itu pada waktu yang sama. Kami tidak membuat destination1 array sebelum memanggil copyOfRange() metode. Untuk mempelajari lebih lanjut tentang metode ini, kunjungi Java copyOfRange.


5. Menyalin Array 2d Menggunakan Loop

Mirip dengan array satu dimensi, kita juga dapat menyalin array 2 dimensi menggunakan for lingkaran. Misalnya,

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

            // allocating space for each row of destination array
            destination[i] = new int[source[i].length];

            for (int j = 0; j < destination[i].length; ++j) {
                destination[i][j] = source[i][j];
            }
        }
     
        // displaying destination array
        System.out.println(Arrays.deepToString(destination));  
      
    }
}

Keluaran :

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

Pada program di atas, perhatikan baris,

System.out.println(Arrays.deepToString(destination);

Di sini, deepToString() Metode ini digunakan untuk memberikan representasi yang lebih baik dari array 2 dimensi. Untuk mempelajari lebih lanjut, kunjungi Java deepToString().


Menyalin Array 2d menggunakan arraycopy()

Untuk membuat kode di atas lebih sederhana, kita dapat mengganti loop dalam dengan System.arraycopy() seperti dalam kasus array satu dimensi. Misalnya,

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

             // allocating space for each row of destination array
             destination[i] = new int[source[i].length];
             System.arraycopy(source[i], 0, destination[i], 0, destination[i].length);
        }
     
        // displaying destination array
        System.out.println(Arrays.deepToString(destination));      
    }
}

Keluaran :

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

Di sini, kita dapat melihat bahwa kita mendapatkan output yang sama dengan mengganti for bagian dalam loop dengan arraycopy() metode.


java

  1. C# Array
  2. Operator Jawa
  3. Komentar Jawa
  4. Antarmuka Jawa
  5. Java mencoba-dengan-sumber daya
  6. Anotasi Jawa
  7. Array di C++ | Nyatakan | Inisialisasi | Contoh Pointer ke Array
  8. C++ Alokasi Dinamis Array dengan Contoh
  9. Tutorial Java Array:Deklarasi, Buat, Inisialisasi [Contoh]
  10. Cara Membuat Array Objek di Java