Kamis, 09 Desember 2010

Bermain-main dengan Array Dinamis pada Java

Dalam suatu kasus, kadang array yang sudah dideklarasi dan ditentukan jumlah elemennya, tidaklah cukup untuk menampung nilai atau data. Biasanya kita akan mendeklarasi ulang dan menambah jumlah elemen arraynya agar dapat menampung nilai atau data lebih besar. Perhatikan contoh di bawah ini :

public class CobaArray {
public static void main(String[] args) {

int[] angka = new int[2]; // deklarasi array awal
angka[0]=10;
angka[1]=20;

angka = new int[4]; // deklarasi ulang array
angka[2]=13;
angka[3]=14;


for (int i = 0; i < angka.length; i++) {
System.out.println(angka[i]);
}
}
}

Jika program di atas dieksekusi maka akan menampilkan nilai :

0
0
13
14

Jadi nilai 10 dan 20 yang telah disimpan sebelum perintah deklarasi ulang, ternyata hilang!!!

Solusi agar nilai-nilai sebelum perintah deklarasi ulang array tidak hilang, kita dapat mempergunakan variabel array sementara (temporary) untuk menyimpan nilai-nilai sebelum perintah deklarasi ulang array. Kemudian setelah array dideklarasi ulang, nilai-nilai yang telah disimpan di variabel array sementara, di-copy ke array yang telah dideklarasi ulang. Berikut contoh programnya :

public class CobaArray {
public static void main(String[] args) {
int[] angka = new int[2]; // deklarasi array awal
angka[0]=10;
angka[1]=20;

int[] temp = new int[angka.length]; // var. array sementara
System.arraycopy(angka,0,temp,0,angka.length); // copy array

angka = new int[4]; // deklarasi ulang array
System.arraycopy(temp,0,angka,0,temp.length); // copy array
angka[2]=13;
angka[3]=14;

for (int i = 0; i < angka.length; i++) {
System.out.println(angka[i]);
}
}
}
Maka hasil dari program di atas adalah :

10
20
13
14