Download M12-JCF

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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