Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Java Collection Framework Outlines Memahami Collection Framework di Java Memahami struktur JCF Mampu mengimplementasi JCF Mengetahui perbedaan beberapa concrete class di JCF Framework Framework : Koleksi atau kumpulan potongan-potongan program yang disusun atau diorganisasikan sedemikian rupa, sehingga dapat digunakan untuk membantu membuat aplikasi utuh tanpa harus membuat semua kodenya dari awal. Framework Framework adalah kumpulan fungsi (libraries), sehingga seorang programmer tidak perlu lagi membuat fungsi-fungsi (biasanya disebut kumpulan library) dari awal, programmer tinggal memanggil kumpulan library atau fungsi yang sudah ada didalam framework, tentunya cara menggunakan fungsi-fungsi itu sudah ditentukan oleh framework. Collection Framework Collection Framework adalah arsitektur di Java untuk merepresentasi dan memanipulasi collections. Meliputi: ◦ Interface: tipe data abstract yang merepresentasikan collections ◦ Implementation: berupa implementasi concrete dari interface yang ada ◦ Algorithm: adalah method yang berguna untuk memanipulasi collections, seperti searching dan shorting Method ini bersifat polymorphic, karena bisa diterapkan pada implementasi yang berbeda Hierarki Java Collection Framework Jika array adalah tempat sekumpulan elemen. Maka Collection adalah tempat sekumpulan objek. Collection : suatu wadah/container yang menapung sekumpulan object. Java Collection Framework mendukung tiga jenis collections utama, yakni: ◦ set ◦ list ◦ map Hirarki Iterator ListIterator JCF Interfaces dan Classes Interfaces: ◦ Collection ◦ Set (tidak ada duplikasi) ◦ SortedSet ◦ List (bisa ada duplikasi) ◦ Map (mis: Dictionary) ◦ SortedMap ◦ Iterator ◦ Iterable ◦ ListIterator • Classes: • HashSet • TreeSet • ArrayList • LinkedList • • HashMap TreeMap Interface Iterator Iterator ListIterator Interface Iterator Iterator adalah interface yang dapat digunakan untuk mengontrol object yang mengimplementasi interface ini (untuk selanjutnya object ini disebut object iterator) Dengan object iterator, kita dapat menelusuri semua object yang ada dalam collection Interface Iterator • boolean hasNext(); ◦ untuk memeriksa apakah object berikutnya ada atau tidak • E next(); ◦ untuk mendapatkan object berikutnya • void remove(); ◦ dipanggil setelah menjalankan method next() ◦ menghapus object yang sudah dipanggil dengan next() terakhir ◦ setelah memanggil next(), tidak bisa menjalankan remove() dua kali, pemanggilan kedua menyebabkan munculnya exception Interface Collection Interface Collection public int size(); ◦ public boolean isEmpty(); ◦ Untuk mengecek bahwa collection yang dimaksud mengandung object x public boolean remove(Object x); ◦ Untuk memasukkan satu atau beberapa object ke collection. Pengembaliannya adalah true jika berhasil menambah. (beberapa jenis collection tidak mengijinkan duplikasi, sehingga proses add bisa saja gagal) public boolean contains(Object x); ◦ Mengembalikan nilai true bila tidak ada object dalam collection public boolean add(E x); ◦ Mengembalikan angka yang merupakan jumlah object dalam collection Menghapus sebuah object x dari collection. Kembalian bernilai true, jika ada object yang dihapus public Iterator<E> iterator(); ◦ Mengembalikan sebuah iterator yang digunakan untuk menelusuri object di collection Interface Set Interface Set Set extends collection ◦ Set menuruni semua method milik Collection Set tidak memperbolehkan adanya duplikasi object di koleksinya ◦ Jika ingin menambah elemen dua kali dengan “add()” maka “add()” yang kedua akan mengembalikan nilai false Untuk mengakses object-object di Set, digunakan Iterator Representasi Set adalah seperti group, misal group musik, group mata kuliah Implementasi Set (Concrete Class) java.util.HashSet<E> (merupakan hashtable) ◦ Constructors: public HashSet(); public HashSet(Collection<? extends E> c); public HashSet(int initialCapacity); public HashSet(int initialCapacity, float loadFactor); java.util.TreeSet<E> (merupakan balance BST) ◦ Constructors public TreeSet(); public TreeSet(Collection<? extends E> c); ............. Contoh Penggunaan Set import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class ContohSet { static public void main(String[] args) { Set<Integer> set = new HashSet<Integer>(); // membuat object HashSet // yang menghandle object Integer settingSet(set); // setting isi koleksi printSet(set); // menampilkan isi koleksi settingSet(set); // setting isi koleksi printSet(set); // tampilkan koleksi } static private void settingSet(Set<Integer> set){ set.removeAll(set); // mengosongkan isi koleksi for (int i = 1; i < 10000; i *= 2) { set.add(i); // menambahkan object ke koleksi } } static private void printSet(Set<Integer> set){ Iterator itr = set.iterator(); // mendapatkan object iterator dari koleksi while(itr.hasNext()) System.out.print(itr.next()+" "); System.out.println(); } } // menampilkan isi koleksi Contoh Penggunaan Set Object di dalam Set tidak urut tidak urut berdasar urutan input tidak urut berdasarkan nilai data di object Program di atas bisa saja menghasilkan hasil sbb: 1 4096 8192 2 32 4 64 512 8 1024 128 2048 16 256 4096 1 8192 32 2 512 64 4 1024 8 128 2048 16 256 Interface SortedSet Interface SortedSet SortedSet memiliki fitur yang sama dengan Set, namun object yang tersimpan diurutkan berdasarkan datanya SortedSet biasanya dikombinasikan dengan TreeSet Efek penggunaan SortedSet, proses penambahan data jadi lebih lambat daripada Set biasa Contoh Penggunaan SortedSet import java.util.Iterator; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; public class ContohSortedSet { static public void main(String[] args) { SortedSet<Integer> set = new TreeSet<Integer>(); settingSet(set); printSet(set); // membuat object TreeSet // kemudian dihandle oleh SortedSet // setting isi koleksi // tampilkan koleksi } static private void settingSet(SortedSet<Integer> set) { set.removeAll(set); // kosongkan isi koleksi for (int i = 10000; i > 0; i /= 2) { set.add(i); // menambah object ke koleksi } // secara descending } static private void printSet(SortedSet<Integer> set) { Iterator itr = set.iterator(); // mendapatkan object iterator dari koleksi while (itr.hasNext()) System.out.print(itr.next() + " "); // menampilkan isi koleksi System.out.println(); } } Contoh Penggunaan SortedSet Hasil dari program di atas adalah: 1 2 4 9 19 39 78 156 312 625 1250 2500 5000 10000 Jadi meskipun penambahan object integer ke koleksi dimulai dari nilai besar ke nilai kecil, object yang disimpan otomatis diorganisasi urut dari kecil ke besar Interface List Interface List List extends Collection Items/Objects di List dapat diakses menggunakan posisinya / indeksnya Method “add()” menambahkan object baru di bagian paling belakang dari list List cocok digunakan untuk mengganti Array, dengan ukuran yang dinamis Interface List Method tambahan yang merupakan tambahan baru dari yg dituruni dari interface Collection ◦ public E get(int index) ◦ public E set(int index, E x) ◦ ◦ mengganti object di posisi index dengan object x, dan mengembalikan object yang telah diganti public void add(int index, E x) ◦ mengembalikan object di posisi yang ditunjukkan index menambahkan object E ke posisi x, object lama di posisi x sampai posisi terakhir digeser satu posisi ke belakang public E remove(int index) menghapus object di posisi x, kemudian menggeser di belakang object yang dihapus satu posisi kedepan return object yang dihapus public int indexOf(Object e) Mengembalikan indeks/posisi dari object e Implementasi List (Concrete Class) java.util.ArrayList<E> (representasi array) ◦ Constructors: public ArrayList(); public ArrayList(int initialCapacity) public ArrayList(Collection<? extends E> c); java.util.LinkedList<E> (dobel linked list) ◦ Constructors: public LinkedList(); public LinkedList(Collection<? extends E> c); Kedua-duanya memiliki tambahan method yang specifik untuk masing-masing class Contoh Penggunaan List import java.util.ArrayList; import java.util.List; public class ContohList { public static void main(String[] args) { List<String> list = new ArrayList<String>(); loadData(list); tampilkanList(list); } private static void loadData(List<String> list) { list.add("nol"); list.add("satu"); list.add("dua"); list.add("tiga"); list.add("empat"); } private static void tampilkanList(List<String> list) { for (int i = 0; i < list.size(); i++) System.out.print(list.get(i) + " "); // menampilkan isi koleksi System.out.println(); } } Contoh Penggunaan List Struktur ArrayList mirip dengan Array biasa. Kelebihannya, ukurannya lebih dinamis, bisa bertambah dan berkurang Hasil program di atas adalah: nol satu dua tiga empat Interface Map Interface Map Map digunakan untuk memetakan kunci dan data. Sebagai contoh, kita memiliki suatu katalog buku, kode buku adalah kunci dan object buku adalah datanya Kunci di Map tidak dapat diduplikasi Tiap kunci hanya menunjuk ke satu object data Penggunaan Map biasanya dipadukan dengan class HashMap Interface Map Method yang ada di Map: • V put(K key, V value); • untuk menambahkan pasangan kunci dan object • V get(Object key); • • V remove(Object key); • • mendapatkan jumlah key di map public Set<K> keySet(); • • memeriksa apakah map memiliki object tertentu int size(); • • memeriksa apakan map memiliki kunci tertentu boolean containsValue(Object value); • • untuk menghapus object berdasarkan kunci tertentu boolean containsKey(Object key); • • untuk mendapatkan object berdasarkan kunci tertentu mendapatkan keseluruhan key yang berupa Set public Collection<V> values(); • mendapatkan keseluruhan object data yang berupa collection Implementasi Map java.util.HashMap<K,V> ◦ Constructors: public HashMap<K,V>(); public HashMap<K,V>(int initialCapacity) public HashMap<K,V>(Collection<? extends E> c); java.util.TreeMap<K,V> ◦ Constructors: public TreeMap<K,V>(); public LinkedList<K,V>(Collection<? extends E> c); Kedua-duanya memiliki tambahan method yang specifik untuk masing-masing class Contoh Penggunaan Map import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class ContohMap { /** * @param args */ public static void main(String[] args) { Map<String, Makanan> map = new HashMap<String, ContohMap.Makanan>(); ContohMap ob = new ContohMap(); ob.loadData(map); ob.tampilkanList(map); } void loadData(Map map) { map.put("Soto", new Makanan("Soto", 5000)); map.put("Rujak", new Makanan("Rujak", 5500)); map.put("Opor", new Makanan("Opor", 7000)); } void tampilkanList(Map map) { Iterator<String> itr = map.keySet().iterator(); while (itr.hasNext()) { String nama = itr.next(); System.out.println(nama + " " + ((Makanan) map.get(nama)).getHarga()); } } Contoh Penggunaan Map public class Makanan { String namaMakanan; int harga; Makanan(String nama, int harga) { namaMakanan = nama; this.harga = harga; } public int getHarga() { return harga; } } } Contoh Penggunaan Map Map sesuai untuk membuat struktur key dan value (kunci dan data) ◦ kunci ===> data Pada contoh di atas, yang jadi kunci adalah nama makanan, datanya adalah object makanan