Abstract Data Types Dan Java Collections API
Abstract Data Types Dan Java Collections API
dan
Java Collections API
Abstract Data Type (ADT) adalah ...
Pengguna dari sebuah abstract data type hanya perlu memikirkan dan
mempelajari interface yang diberikan tanpa perlu mengetahui banyak
bagaimana implementasi dilakukan. (prinsip: enkapsulasi)
Implementasi dapat saja berubah namun interface tetap.
Dengan kata lain, implementasi dari sebuah abstract data type dapat saja
berbeda-beda namun selama masih mengikuti interface yang diberikan maka
program yang menggunakan abstract data type tersebut tidak akan
terpengaruh.
Struktur data = container
Sebuah struktur data dapat dipandang
sebagai tempat penyimpanan benda
(container).
Beberapa hal yang dapat dilakukan:
Menaruh benda
Mengambil benda
Mencari benda tertentu
Container Mengosongkannya (atau periksa
apakah kosong)
Contoh Interface struktur data :
void add(Benda x);
void remove(Benda x);
Benda access(Benda x);
void makeEmpty();
Data boolean isEmpty();
ADT: List
Indeks 1 2 3 4
Sebuah List adalah kumpulan benda di mana setiap benda
memiliki posisi.
Setiap benda dalam List dapat diakses melalui indeks-nya.
Contoh paling gampang: array!
Contoh Interface list :
void insert(int indeks, Benda x);
void append(Benda x);
void remove(int indeks);
void remove(Benda x);
Benda get(int indeks);
ADT: Stack
Sebuah Stack adalah kumpulan benda
push pop,top
di mana hanya benda yang most
recently inserted dapat diakses.
Bayangkan setumpuk koran.
Most Benda yang paling terakhir ditambahkan
recent ditaruh di atas tumpukan (top).
Operasi pada Stack membutuhkan
waktu konstan (O(1)).
enqueue dequeue
getFront
tambah
Nilai:
Map adalah struktur data yang berisi sekumpulan pasangan nama (keys) dan
nilai (values) dari nama tersebut.
Nama (Keys) harus unik, tapi nilai (values) tidak.
Bayangkan basis-data yang berisi informasi peserta kuliah. Apa yang menjadi
“nama” (keys)?
Contoh Interface sebuah Map :
Highest
priority
Priority Queue adalah struktur data queue yang tiap elemen data dapat miliki
nilai prioritas. Data dengan nilai prioritas tertinggilah yang dapat diakses
terlebih dulu.
Bayangkan sebuah antrian pada printer jaringan. Misalkan ada sebuah
permintaan cetak untuk 100 halaman hanya beberapa detik lebih awal dari
permintaan cetak selembar halaman.
Contoh Interface sebuah Priority Queue :
Example() {
list = new ArrayList<String>();
list.add(new String("Hello world!"));
list.add(new String("Good bye!"));
}
public void printList() {
for (Object s:list) {
System.out.println(s);
}
}
Iterator i = c.iterator();
Iterator User
(program yang
mengakses data)
Collection
Contoh lain penggunaan iterator: