Cara Mengcopy Array Dalam Program Java

Dalam Java, anda dapat menggunakan pernyataan penetapan atau tanda =,  untuk menyalin tipe data primitif, namun tidak demikian dengan array.

Apa yang terjadi ketika anda menetapkan variabel suatu array ke variabel array lainnya?

Yang terjadi sebenarnya adalah anda menyalin satu referensi ke referensi lainnya dan kemudian membuat kedua variabel mengarah pada lokasi memori yang sama.

 

menyalin array Java

Perhatikan kode di bawah ini:

Output:
yourArray sekarang adalah :
[1] [2] [3] [4] [5]
Setelah nilai index 0 myArray diubah menjadi 100, yourArray adalah :
[100] [2] [3] [4] [5]

Pada pernyataan baris 9 yaitu yourArray = myArray, ini tidak menyalin isi dari myArray ke yourArray, namun hanya menyalin referensi nilai dari myArray ke yourArray, oleh karena itu ketika nilai myArray pada index 0 diganti dengan 100, maka nilai pada index 0 untuk yourArray juga akan berubah.

Terus bagaimana dengan nasib dari array yang sebelumnya direferensikan dengan yourArray, yaitu dengan konten elemen {5, 6, 7, 8, 9,10}? Array yang sebelumnya direferensikan dengan yourArray akan menjadi sampah, yang secara otomatis akan dikumpulkan oleh Java Virtual Machine, proses ini dikenal dengan istilah garbage collection.

Ada 3 cara untuk menyalin array, yaitu:

  • Menggunakan method clone untuk menyalin array
  • Menggunakan method static arraycopy yang terdapat dalam class System.
  • Menggunakan loop untuk menyalin elemen individu secara satu persatu

Kali ini hanya akan di bahas mengenai penggunaan loop dan method arraycopy saja, karena penggunaan method clone berhubungan dengan class abstract dan juga interfaces.

Menggunakan loop

Pertama kita akan menggunakan loop, karena lebih familiar untuk pemula sehingga mudah dimengerti ketika menyalin elemen individu dari array, yang penting mengetahui terlebih dahulu mengenai proses dasar pada array, contohnya seperti di bawah ini:

Output:
yourArray sekarang adalah :
[1] [2] [3] [4] [5]
Setelah nilai index 0 myArray diubah menjadi 100, yourArray adalah :
[1] [2] [3] [4] [5]

Bisa dilihat perbandingannya, walaupun myArray diubah pada nilai index 0 menjadi 100, namun nilai elemen yourArray adalah tetap hasil salinan dari myArray, karena myArray dan yourArray tetap menjadi referensi dari dua array yang berbeda.

Menggunakan method copyarray

Selanjutnya dengan menggunakan method copyarray dari class java.lang.System, syntax dari method ini adalah:
             arraycopy(sourceArray, srcPos, targetArray, tarPos, length);

Parameter dari srcPos dan tarPos mengindikasikan posisi awal dari array sumber / sourceArray dan array target / targetArray. Jumlah dari banyaknya elemen yang disalin dari sourceArray ke targetArray diindikasikan dengan length.

Method copyarray ini tidak mengalokasikan ruang memori untuk targetArray, jadi targetArray harus terlebih dahulu dibuat dengan dialokasikan ruang memori. Barulah setelah penyalinan dilakukan, maka sourceArray dan targetArray akan memiliki konten yang sama namun dengan lokasi memori yang terpisah.

Output:
yourArray sekarang adalah :
[1] [2] [3] [4] [5]
Setelah nilai index 0 myArray diubah menjadi 100, yourArray adalah :
[1] [2] [3] [4] [5]

Be the first to comment

Leave a Reply

Your email address will not be published.


*