Perbedaan Array dan ArrayList pada Java Secara Konseptual
Edisi tutorial pemrograman java kali ini akan membahas tentang perbedaan Array dan ArrayList.
Seperti yang kita ketahui Array dan ArrayList sama-sama berfungsi untuk menyimpan data. Namun secara konsep, keduanya memiliki perbedaan.
Program DemoArray1.java
Dalam program ini kita akan membuat array dimana ukurannya sudah ditentukan. Artinya ukuran array ditentukan oleh programmer (programmer defined). Dan sudah barang tentu elemen-elemen yang disimpan kedalam array dibatasi oleh panjangnya array yang programmer tentukan.
Pada program diatas, programmer telah menentukan ukuran arraynya adalah 5, dimana index terakhirnya adalah 4. Pengisian elemen-elemen : 100,200,300,400,500 juga ditentukan oleh programmer.
Program DemoArray2.java
Nah sekarang timbul pertanyaan, bisa nggak ukuran array dan elemen-elemenya diisi ketika program dijalankan (runtime). Jawabannya tentu bisa. Untuk itu perhatikan program dibawah ini:
Program diatas menampung inputan ukuran atau panjangnya dari sebuah array yang diinputkan oleh user. Kemudian dilanjutkan dengan pengisian elemen-elemenya yang disimpan pada variabel data index ke-i.
Disini kita melihat, walaupun ukuran arraynya bisa inputkan oleh user (user defined), namun ukurannya dianggap fix sized. Maksud dari fixed size, apabila user telah menentukan berapa ukuran arraynya, maka elemen yang akan disimpan adalah sebanyak ukuran array tersebut. Jika kita tambahkan satu atau beberapa elemen setelah ukurannya ditentukan, maka akan terjadi dua kemungkinan :
Program DemoArray3.java
Perbedaan kedua adalah, proses pengisian data (elemen) pada array harus diarahkan ke index berapa data tersebut akan disimpan, sedangkan arraylist tidak perlu diarah ke index berapa data tersebut akan disimpan. Hal ini karena arraylist memiliki kemampuan otomatis dalam proses penyimpanan pada index ke-i.
Program DemoArrayList.java
Jika kita perhatikan Outpunya (Gambar.4), panjang arraylistnya ditetapkan 4 lalu diikuti pengisian elemennya sebanyak ukuran panjang arralist. Namun pada proses percetakan, terdapat 6 elemen arraylist. Elemen ke-5 dan ke-6 telah diinput pada program. Disinilah kita namakan arraylist tersebut bersifat resizeable, ukuran panjangnya bisa diresize walaupun sudah ditentukan ukuran panjangnya.
Seperti yang kita ketahui Array dan ArrayList sama-sama berfungsi untuk menyimpan data. Namun secara konsep, keduanya memiliki perbedaan.
Perbedaan Array dan ArrayList
Disini kita akan tunjukkan kode program yang menggunakan Array dan ArrayList, agar nantinya kita dapat memahami maksud dari perbedaan Array dan ArrayList secara konseptual.Program java menggunakan Array
Disini kita akan memahami maksud atau prinsip dari penggunaan array yang disertakan dengan tiga buah program sebagai komporasinya.Program DemoArray1.java
Dalam program ini kita akan membuat array dimana ukurannya sudah ditentukan. Artinya ukuran array ditentukan oleh programmer (programmer defined). Dan sudah barang tentu elemen-elemen yang disimpan kedalam array dibatasi oleh panjangnya array yang programmer tentukan.
public class DemoArray1 {
public static void main(String args[]) {
int[] data = new int[5];
data[0] = 100;
data[1] = 200;
data[2] = 300;
data[3] = 400;
data[4] = 500;
for(int i=0; i<data.length; i++) {
System.out.println(i+1 + ". Nilai pada index "+i +"="+ data[i]);
}
}
}
Outputnya ditunjukkan oleh Gambar.1 dibawah ini :Gambar.1 |
Program DemoArray2.java
Nah sekarang timbul pertanyaan, bisa nggak ukuran array dan elemen-elemenya diisi ketika program dijalankan (runtime). Jawabannya tentu bisa. Untuk itu perhatikan program dibawah ini:
import java.util.Scanner;
public class DemoArray2 {
public static void main(String args[]) {
int size;
Scanner inputan = new Scanner(System.in);
System.out.print("Masukkan Ukuran Array :");
size = inputan.nextInt();
int[] data = new int[size];
System.out.println("\nMasukkan elemen untuk Array");
for(int i=0; i<size; i++) {
System.out.print(i+1 + ". Nilai pada index ke-"+i +"=");
data[i]= inputan.nextInt();
}
System.out.println("\nMencetak Elemen Array");
for(int i=0; i<size; i++) {
System.out.println(i+1 + ". Nilai yang diinputkan pada index ke-"+i +"="+ data[i]);
}
}
}
Outputnya ditunjukkan oleh Gambar.2 dibawah ini :Gambar.2 |
Program diatas menampung inputan ukuran atau panjangnya dari sebuah array yang diinputkan oleh user. Kemudian dilanjutkan dengan pengisian elemen-elemenya yang disimpan pada variabel data index ke-i.
Disini kita melihat, walaupun ukuran arraynya bisa inputkan oleh user (user defined), namun ukurannya dianggap fix sized. Maksud dari fixed size, apabila user telah menentukan berapa ukuran arraynya, maka elemen yang akan disimpan adalah sebanyak ukuran array tersebut. Jika kita tambahkan satu atau beberapa elemen setelah ukurannya ditentukan, maka akan terjadi dua kemungkinan :
- Tidak terjadi runtime error apabila size arraynya lebih besar atau sama dengan dari index array yang akan ditambahkan elemennya. Namun inputan elemenya tidak disimpan
- Bila size array lebih kecil dari index setelah ukurannya ditentukan akan terjadi Exception dengan kategori ArrayIndexOutBoundsException seperti yang ditunjukkan oleh Program DemoArray3.java dibawah ini :
Program DemoArray3.java
import java.util.Scanner;
public class DemoArray3 {
public static void main(String args[]) {
int size;
Scanner inputan = new Scanner(System.in);
System.out.print("Masukkan Ukuran Array :");
size = inputan.nextInt();
int[] data = new int[size];
System.out.println("\nMasukkan elemen untuk Array");
for(int i=0; i<size; i++) {
System.out.print(i+1 + ". Nilai pada index ke-"+i +"=");
data[i]= inputan.nextInt();
}
data[5] = 200;
System.out.println("\nMencetak Elemen Array");
for(int i=0; i<size; i++) {
System.out.println(i+1 + ". Nilai yang diinputkan pada index ke-"+i +"="+ data[i]);
}
}
}
Outputnya ditunjukkan oleh Gambar.3 dibawah ini :Gambar.3 |
Program java menggunakan ArrayList
Setelah kita memahami ketiga program array diatas, sekarang kita akan melihat perbedaan array dan arraylist , yaitu : resizeable. Maksud dari resizeable, walaupun sudah kita tentukan ukuran arraynya, namun bila kemudian ada penambahan elemen maka akan tetap disimpan dan tidak akan terjadi exception seperti pada array.Perbedaan kedua adalah, proses pengisian data (elemen) pada array harus diarahkan ke index berapa data tersebut akan disimpan, sedangkan arraylist tidak perlu diarah ke index berapa data tersebut akan disimpan. Hal ini karena arraylist memiliki kemampuan otomatis dalam proses penyimpanan pada index ke-i.
Program DemoArrayList.java
import java.util.ArrayList;
import java.util.Scanner;
public class DemoArrayList {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer> data = new ArrayList<Integer>();
System.out.print("Masukkan ukurannya: ");
int size = scan.nextInt();
System.out.println("\nMasukkan Datanya: ");
for(int i=0; i<size; i++)
{
System.out.print("Data ke "+(i+1)+"=");
data.add(scan.nextInt());
}
//Inputan tambahan elemennya
data.add(600);
data.add(900);
System.out.println("Mencetak Data Arraylist: ");
for(int i=0; i<data.size();i++)
{
System.out.println("Data ke "+(i+1)+" adalah "+data.get(i));
}
}
}
Outputnya ditunjukkan oleh Gambar.4 dibawah ini :Gambar.4 |
Jika kita perhatikan Outpunya (Gambar.4), panjang arraylistnya ditetapkan 4 lalu diikuti pengisian elemennya sebanyak ukuran panjang arralist. Namun pada proses percetakan, terdapat 6 elemen arraylist. Elemen ke-5 dan ke-6 telah diinput pada program. Disinilah kita namakan arraylist tersebut bersifat resizeable, ukuran panjangnya bisa diresize walaupun sudah ditentukan ukuran panjangnya.
Kesimpulan
Dari ke-4 program java diatas, dapat kita tarik kesimpulan bahwa perbedaannya terletak pada :- Array bersifat fix sized, sedangkan ArrayList bersifat resizeable.
- Penyimpanan elemen pada Array harus diarahkan pada index ke-i, sedangkan ArrayList memiliki kemampuan otomatis untuk penyimpanan pada index ke-i.