Sebuah collection adalah sebuah object yang merepresentasikan kumpulan object-object. Collection digunakan untuk menyimpan, mengambil, dan memanipulasi data-data. Salah satu collection paling sederhana adalah Array. Namun dalam Collection Framework, Java menawarkan berbagai bentuk lain dari Collection.
Karena Collection adalah interface, maka harus dibuat class yang mengimplementasikannya. Dalam Java API, sudah tersedia beberapa class yang sangat berguna untuk memanage object-object dalam Collection, sesuai sifat dan kebutuhannya. Beberapa kelebihan utama menggunakan collection framework antara lain:
- Mengurangi effort dalam membuat program, karena sudah tersedia struktur data dan algoritma tanpa harus menulis sendiri.
- Meningkatkan performa, karena setiap implementasi dapat berfungsi maksimal sesuai kasus yang ada.
- Mudah dipelajari, sehingga mengurangi effort untuk mempelajari cara menggunakan API.
- Dapat dikembangkan dan fleksibel terhadap tipe object yang ada dalam Collection.
| Implementations | ||||||
| Hash Table | Resizable Array | Balanced Tree | Linked List | Hash Table + Linked List | ||
| Interfaces | Set | HashSet | TreeSet | LinkedHashSet | ||
| List | ArrayList | LinkedList | ||||
| Map | HashMap | TreeMap | LinkedHashMap | |||
- ArrayList digunakan untuk membuat array yang ukurannya dinamis.
Berbeda dengan array biasa yang ukurannya harus ditentukan di awal
deklarasi array, dengan ArrayList, ukurannya akan fleksibel tergantung
banyaknya elemen yang dimasukkan. Pendeklarasian object ArrayList
sebaiknya diikuti dengan nama class yang akan dimasukkan dalam List
tersebut. Tujuannya agar method dan property dari setiap object dalam
ArrayList dapat diakses secara langsung. Namun jika tidak mencantumkan
nama class pun tidak masalah selama proses parsing class benar.
Kelebihan lain collection framework ini adalah kemampuannya untuk membuat perulangan dirinya sendiri, sebab Collection framework mengimplementasikan interface Iterable. Sehingga untuk membuat perulangan “for” sebenarnya cukup dengan:123456789101112131415161718192021
importjava.util.ArrayList;publicclassArrayListDemo {publicstaticvoidmain(String[] args) {ArrayList<Human> list1 =newArrayList<Human>();for(inti =0; i <10; i++) {list1.add(newHuman("Human "+ i));}for(inti =0; i < list1.size(); i++) {System.out.println(list1.get(i).name);}}}classHuman {publicString name;publicHuman(String name) {this.name = name;}}
123for(Human h:list1){System.out.println(h.name);} - Implementasi kedua yang cukup sering dipakai adalah Set. Sama
seperti ArrayList, Set ini akan berukuran dinamis. Hanya saja, Set tidak
akan memperbolehkan duplikasi object yang diketahui dari method
equals() yang ada di setiap object dalam Java. Anda bisa meng-override
method tersebut untuk membuat kriteria Anda sendiri, seperti pada contoh
di bawah ini.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
importjava.util.ArrayList;importjava.util.HashSet;publicclassHashSetDemo {publicstaticvoidmain(String[] args) {HashSet<Human> set =newHashSet<Human>();ArrayList<Human> list =newArrayList<Human>();Human a =newHuman("A");Human b =newHuman("B");Human c =newHuman("A");set.add(a);set.add(b);set.add(c);list.add(a);list.add(b);list.add(c);System.out.println("Print Set");for(Human h : set) {System.out.println(h.name);}System.out.println("Print List");for(Human h : list) {System.out.println(h.name);}}}classHuman {publicString name;publicHuman(String name) {this.name = name;}@Overridepublicbooleanequals(Object obj) {if(!(objinstanceofHuman)) {returnsuper.equals(obj);}else{Human comp = (Human)obj;returncomp.hashCode() == obj.hashCode();}}@OverridepublicinthashCode() {inthash =7;hash =53* hash + (this.name !=null?this.name.hashCode() :0);returnhash;}} - Implementasi ketiga adalah dari Interface Map. Map berfungsi sebagai
collection yang memetakan setiap value dengan key tertentu. Jika
mencoba menambahkan elemen dengan key yang sama, maka elemen sebelumnya
pada key tersebut akan ditindih sehingga hilang. Deklarasi HashMaps juga
harus diikuti nama class yang akan menjadi key dan value-nya.
12345678910111213141516171819202122
importjava.util.HashMap;importjava.util.Iterator;publicclassHashMapDemo {publicstaticvoidmain(String[] args) {HashMap<String, String> map =newHashMap<String, String>();map.put("rumah","Tipe 45");map.put("mobil","BMW");map.put("bunga","Mawar");System.out.println("Sebelum diubah");Iterator<String> ite = map.keySet().iterator();while(ite.hasNext()) {System.out.println(map.get(ite.next()));}System.out.println("Setelah diubah");map.put("mobil","Ferrari");for(String key : map.keySet()) {System.out.println(map.get(key));}}} - Contoh lainnya implementasi yang sering dipakai adalah Stack. Stack
merupakan sebuah collection sederhana yang menerapkan aturan LIFO (Last
in First out). Artinya, elemen yang masuk terakhir akan dikeluarkan
terlebih dahulu. Meskipun terdapat method add, get, dan remove karena
Stack tetap inherit ke interface collection, namun method yang umum
dipakai dalam Stack adalah push() untuk memasukkan elemen, pop() untuk
mengeluarkan elemen, empy() untuk mengecek apakah stack kosong, dan
peek() untuk melihat elemen teratas. Semua dilakukan sesuai urutan LIFO.
Untuk memanipulasi elemen-elemen stack seperti pengurutan dan pengacakan, bisa menggunakan static method pada class java.util.Collections. Dengan demikian akan mempermudah proses pembuatan program Anda. Masih banyak lagi implementasi Collections yang siap Anda gunakan langsung.123456789101112131415161718192021222324
importjava.util.Stack;publicclassStackDemo {publicstaticvoidmain(String[] args) {Stack<String> stack =newStack<String>();stack.push("A");stack.push("B");stack.push("C");System.out.println("Print stack awal berurutan biasa");for(String s : stack) {System.out.println(s);}System.out.println("Keluarkan satu");System.out.println(stack.pop());System.out.println("Tambahkan dua");stack.push("D");stack.push("E");System.out.println("Print stack sesuai urutan keluar");while(!stack.empty()) {System.out.println(stack.pop());}System.out.println("Selesai");}}

Tidak ada komentar:
Posting Komentar