Cara menyalin array di Jawa

Jika satu larik dicopy ke larik lain, hasilnya seharusnya ada dua larik independen dengan dua nama berbeda tetapi dengan nilai korespondensi yang sama. Perubahan nilai satu unsur larik tidak boleh mengakibatkan perubahan apa pun pada unsur yang sesuai dari larik lainnya.

Ketika sebuah array benar-benar dicopy ke yang lain, jika panjang array baru lebih pendek dari panjang array asli, maka array baru adalah copyan tetapi terpotong pada panjang yang dicopy. Jika array baru lebih panjang, maka unsur tambahan menjelang akhir diisi dengan nilai default dari tipe data. Agar satu larik dicopy ke larik lain, kedua larik harus bertipe sama atau bertipe kompatibel.

Java memiliki metode untuk menyalin satu array ke array lainnya. Metode ini adalah metode copyOf(), dan kelebihan beban untuk tipe data yang berbeda. Ini adalah metode statis dari kelas Array. “statis” berarti array tidak harus dipakai untuk metode yang akan digunakan. Ini menggunakan nama kelas, Array, dengan ‘A’ pertama dalam huruf besar. Metode mengembalikan array yang dicopy. Artikel ini menjelaskan berbagai bentuk kelebihan beban dari metode copyOf(). Ini termasuk cara menyalin jenis referensi. Cara menyalin rentang array tidak ketinggalan.

Menyalin Array Nilai Boolean

Sintaksnya adalah:

static boolean[] copyOf(boolean[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, false diisi sebagai nilai ke array baru untuk memiliki panjang baru. Program berikut menggambarkan hal ini:

    import java.util.Arrays;
    public class TheClass {
        public static void main(String[] args) {
boolean[] orig = {true, true, true, true, true};
boolean[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
boolean[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
boolean[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }
    }

Outputnya adalah:

true true true

true true true true true

true true true true true false false

Untuk jalur keluaran pertama, ada pemotongan. Untuk jalur keluaran kedua, kedua array adalah sama. Array baru lebih panjang dari array asli untuk jalur keluaran ketiga.

Panjang larik baru ditentukan oleh parameter newLength dari sintaks metode copyOf().

Menyalin Array Nilai Byte

Sintaksnya adalah:

static byte[] copyOf(byte[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, 0 diisi sebagai nilai ke array baru, untuk memiliki panjang baru. Kode metode main() berikut mengilustrasikan hal ini:

    static byte[] copyOf(byte[] original, int newLength)

original is the name of the original array. newLength is the length of the new or copied array. If it is shorter, the copy is truncated at newLength. If it is longer, 0 is padded as values to the new array, to have the new-length. following main() method code illustrates this:

        public static void main(String[] args) {
byte[] orig = {1, 2, 3, 4, 5};
byte[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
byte[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
byte[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

1 2 3

1 2 3 4 5

1 2 3 4 5 0 0

Panjang larik baru ditentukan oleh parameter newLength dari sintaks metode copyOf().

Menyalin Array Nilai char

Sintaksnya adalah:

static char[] copyOf(char[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, ‘ ‘ diisi sebagai nilai ke larik baru, untuk memiliki panjang baru. Contoh kode:

        public static void main(String[] args) {
char[] orig = {'A', 'B', 'C', 'D', 'E'};
char[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
char[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
char[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

A B C

A B C D E

A B C D E ‘ ’ ‘ ’

Panjang larik baru ditentukan oleh parameter newLength dari sintaks metode copyOf().

Menyalin Array Nilai ganda

Sintaksnya adalah:

static double[] copyOf(double[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, 0,0 diisi sebagai nilai ke array baru, untuk memiliki panjang baru. Contoh kode:

        public static void main(String[] args) {
double[] orig = {1.5, 2.5, 3.5, 4.5, 5.5};
double[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
double[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
double[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

1.5 2.5 3.5

1.5 2.5 3.5 4.5 5.5

1.5 2.5 3.5 4.5 5.5 0.0 0.0

Panjang larik baru ditentukan oleh parameter newLength dari sintaks metode copyOf().

Menyalin Array Nilai float

Sintaksnya adalah:

static float[] copyOf(float[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, 0,0 diisi sebagai nilai ke array baru, untuk memiliki panjang baru. Contoh kode:

        public static void main(String[] args) {
float[] orig = {1.5f, 2.5f, 3.5f, 4.5f, 5.5f};
float[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
float[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
float[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

1.5 2.5 3.5

1.5 2.5 3.5 4.5 5.5

1.5 2.5 3.5 4.5 5.5 0.0 0.0

Panjang larik baru ditentukan oleh parameter newLength dari sintaks metode copyOf().

Menyalin Array Nilai int

Sintaksnya adalah:

static int[] copyOf(int[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, 0 diisi sebagai nilai ke array baru, untuk memiliki panjang baru. Contoh kode:

        public static void main(String[] args) {
int[] orig = {1, 2, 3, 4, 5};
int[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
int[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
int[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

1 2 3

1 2 3 4 5

1 2 3 4 5 0 0

Panjang larik baru ditentukan oleh parameter newLength dari sintaks metode copyOf().

Menyalin Array Nilai Panjang

Sintaksnya adalah:

static long[] copyOf(long[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, 0 diisi sebagai nilai ke array baru, untuk memiliki panjang baru. Contoh kode:

        public static void main(String[] args) {
long[] orig = {1, 2, 3, 4, 5};
long[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
long[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
long[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

1 2 3

1 2 3 4 5

1 2 3 4 5 0 0

Panjang larik baru ditentukan oleh parameter newLength dari sintaks metode copyOf().

Menyalin Array Nilai Pendek

Sintaksnya adalah:

static short[] copyOf(short[] original, int newLength)

asli adalah nama dari array asli. newLength adalah panjang array baru atau yang dicopy. Jika lebih pendek, copyan terpotong di newLength. Jika lebih panjang, 0 diisi sebagai nilai ke array baru, untuk memiliki panjang baru. Contoh kode:

        public static void main(String[] args) {
short[] orig = {1, 2, 3, 4, 5};
short[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
short[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
short[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

1 2 3

1 2 3 4 5

1 2 3 4 5 0 0

Menyalin Array Tipe Data Referensi

Contoh yang baik dari tipe data referensi adalah objek string, yang dibuat dari kelas string. Sintaks copyOf()-nya sama dengan sintaks di atas. Kode berikut menggambarkan hal ini:

    import java.util.Arrays;
    public class TheClass {

        public static void main(String[] args) {
String[] orig = {"one", "two", "three", "four", "five"};
String[] cpy1 = Arrays.copyOf(orig, 3);
            for (int i=0; i< cpy1.length; i++) {System.out.print(cpy1[i]); System.out.print(' ');} System.out.println();
String[] cpy2 = Arrays.copyOf(orig, 5);
            for (int i=0; i< cpy2.length; i++) {System.out.print(cpy2[i]); System.out.print(' ');} System.out.println();
String[] cpy3 = Arrays.copyOf(orig, 7);
            for (int i=0; i< cpy3.length; i++) {System.out.print(cpy3[i]); System.out.print(' ');} System.out.println();
        }
    }

Outputnya adalah:

one two three

one two three four five

one two three four five null null

Nilai default untuk tipe data referensi adalah null.

Menyalin Rentang

Rentang array dapat dicopy. Sintaks untuk menyalin rentang array karakter adalah:

static char[] copyOfRange(char[] original, int from, int to)

“dari” adalah indeks pertama, dan “ke” adalah indeks terakhir, yang nilai rentangnya, tidak disertakan, dalam copyan. Contoh kode:

        public static void main(String[] args) {
char[] orig = {'A', 'B', 'C', 'D', 'E'};
char[] cpy = Arrays.copyOfRange(orig, 1, 3);
            for (int i=0; i<cpy.length; i++) {System.out.print(cpy[i]); System.out.print(' ');} System.out.println();
        }

Outputnya adalah:

B C

Menyalin rentang tipe data primitif dan referensi mirip dengan kode ini.

Kesimpulan

Kelas Array memiliki metode kelebihan beban statis untuk menyalin array. Ini digunakan untuk menyalin seluruh array. Jika larik yang dicopy pendek, penyalinan akan dilakukan dengan panjang terpotong yang ditunjukkan. Jika larik yang dicopy lebih panjang dari larik asli, nilai default
akan diisi untuk unsur tambahan yang ditambahkan. Metode copyOfRange() statis dapat digunakan untuk menyalin rentang. Hal berikutnya yang harus dipelajari pembaca adalah cara menyalin array tipe generik, <T>.

Related Posts