Anda di halaman 1dari 14

Praktikum 5

Collection dan Generic

Tujuan Praktikum :
Memberikan pemahaman kepada mahasiswa tentang collection Memberikan pemahaman kepada mahasiswa tentang generic

I. DASAR TEORI 1.1 Collection


Collection Class merupakan sekumpulan class yang digunakan untuk menyimpan, mengolah, dan mengambil kembali sekumpulan object. Class class untuk struktur data terdapat pada package java.util. Pada class java terdapat tiga jenis koleksi yang mempunyai cara berbeda dalam menyimpan dan mengolah objek : Sets, merupakan jenis koleksi paling sederhana. Dengan karakteristik sebagai berikut : o o o Tidak ada mekanisme kontrol bagaimana data dimasukan dan diurutkan. Tidak boleh ada objek yang sama (harus unik) . Yang termasuk di dalamnya adalah : HashSet, LinkedHashSet, TreeSet, dan EnumSet

Sequence, merupakan jenis koleksi yang canggih daripada sets. Dengan karakteristik sebagai berikut : o Sudah ada mekanisme kontrol bagaimana data dimasukan dan diurutkan (data masuk berurutan). o Yang termasuk di dalamnya adalah : Vector, Stack, LinkedList, ArrayList, dan PriorityQueue.

Maps, Sering juga disebut dictionary karena objek disimpan berpasangan dengan kunci(key). Artinya, setiap objek yang disimpan dalam maps mempunyai kunci yang berbeda. Collection class yang termasuk ke dalam kategori maps, antara lain HashTable, HashMap, LinkedHashMap, WeakHashMap, IdentityHashMap dan TreeMap

Ilustrasi class pada Java Collection FrameWork


1. Objek Array Dalam Java API, Arrays merupakan class dalam package java.util. Berikut merupakan daftar metode penting yang dapata membantu pengolahan data dengan array. Method static int binarySearch(array, key) boolean equals(array1, array2) static void sort (array) static string toString(array) Keterangan Pencarian nilai dalam array. Membandingkan apakah dua array memiliki nilai sama. Bekerja pada array satu dimensi. Mengurutkan isi array Mengubah nilai array menjadi string.

Berikut dua contoh kode program yang menggunakan array. Program ArrayUrut digunakan untuk mengurutkan elemen array, sedangkan program ArrayCari digunakan untuk mencari nilai pada elemen array dan menentukan letaknya. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. import java.util.Arrays; public class ArrayUrut { public static void main(String[] args) { String[] nilaiMataKuliah = {"B","D","A","E","C"}; System.out.println("Sebelum diurutkan : "); for(int i=0;i<5;i++) System.out.println(nilaiMataKuliah[i]); Arrays.sort(nilaiMataKuliah); System.out.println("Setelah diurutkan : "); for(int j=0;j<5;j++) System.out.println(nilaiMataKuliah[j]);

12. 13. }

Pencarian dalam array dilakukan dengan metode binarySearch(). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. } } else System.out.println("Data tidak ditemukan"); import java.util.Arrays; public class ArrayCari { public static void main(String[] args) { String[] gender = new String[3]; gender[0]="laki"; gender[1]="perempuan"; gender[2]="waria"; int find = Arrays.binarySearch(gender,"perempuan"); if(find > -1) System.out.println("Data ditemukan pada : "+find);

2. List List merupakan sebuah interface dari koleksi yang ada. Koleksi-koleksi yang merupakan implementasi dari List antara lain adalah ArrayList, Vector, Stack, LinkedList, dll. List juga dapat diimplementasikan pada class yang dibuat dengan catatan, bahwa seluruh method-method yang terdapat pada List tersebut harus diimpementasikan. Berikut merupakan contoh penggunaan List saat diimplementasikan pada suatu class. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. public int size() { throw new UnsupportedOperationException("Not supported yet."); } public class Listz implements List{ public static void main(String[] args) { //do your bussiness logic here import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator;

13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... ...

} public boolean isEmpty() { throw new UnsupportedOperationException("Not supported yet."); } public boolean contains(Object o) { throw new UnsupportedOperationException("Not supported yet."); } public Iterator iterator() { throw new UnsupportedOperationException("Not supported yet."); }

Berikut merupakan contoh penggunaan List saat dilakukan polimorfhisme dengan konstruktor kelas turunannya. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. } } public class Listz{ public static void main(String[] args) { List angka = new ArrayList(); angka.add("One"); angka.add("Two"); angka.add(3); angka.add("Four"); for (Object i: angka) System.out.println(i); angka.set(1, "Satu"); angka.remove(angka.size()-1); System.out.println(angka); import java.util.ArrayList; import java.util.List;

3. Array List ArrayList merupakan koleksi yang mirip dengan array, namun dengan kemampuan yang lebih baik, misalnya : Jumlah elemen dalam ArrayList dapat berubah secara fleksibel tergantung dari jumlah data yang ada di dalamnya. Setenlah array terbentuk, data baru dapat dimasukkan di tengah-tengah. Tidak harus di akhir elemen array. Isi dalam array bisa dihapus dan index dalam array sesudahnya akan maju satu langkah untuk mengisi slot kosong tersebut. Misal, data pada array index ke 14 dihapus. Maka, array dengan index 15 dan sesudahnya akan maju dan menjadi index 15, demikian seterusnya. Berikut metode dan konstruktor dalam ArrayList yang penting untuk diketahui. Konstruktor ArrayList() ArrayList(int kapasitas) Metode add(object elemen) add(int index,object elemen) clear() get(int index) iterator() remove(int index) remove(object elemen) size toArray() toArray(tipe[] array) Keterangan Konstruktor ArrayList dengan kapasitas 10 elemen. Konstruktor ArrayList dengan kapasitas yang ditentukan sendiri. Keterangan Menambahkan objek ke dalam ArrayList. Menambahkan objek kedalam index yang ditentukan. Menghapus semua elemen dalam ArrayList. Mengambil objek pada index tertentu. Mengembalikan iterator pada ArrayList. Menghapus objek dengan index tertentu. Menghapus elemen tertentu. Jika ada lebih dari satu elemen, maka hanya satu elemen saja yang dihapus. Mengembalikan nilai berupa jumlah elemen dalam ArrayList. Mengembalikan elemen ArrayList sebagai array objek. Mengembalikan elemen ArrayList sebagai Array dengan tipe tetentu. Berikut ini contoh kode yang menggunakan koleksi objek ArrayList. 1. 2. 3. 4. 5. 6. import java.util.ArrayList; public class ArrayListz { public static void main(String[] args) { ArrayList angka = new ArrayList(); angka.add("One"); angka.add("Two");

7. 8. 9. 10. 11. 12. 13. 14. 15. } }

angka.add(3); angka.add("Four"); for (Object i: angka) System.out.println(i); angka.set(1, "Satu"); angka.remove(angka.size()-1); System.out.println(angka);

4. Vector Hampir sama seperti ArrayList. Vector mempunyai dua atribut utama : kapasitas dan penambahan kapasitas. Penambahan kapasitas menentukan berapa jumlah index yang akan ditambahkan jika index saat ini sudah tidak mencukupi. Berikut daftar metode dalam class java.util.Vector yang sering digunakan. Metode void add(int index, object elemen) boolean add(Object elemen) void addElement(Object elemen) void insertElementAt(Object elemen, int index) boolean add(int index,Collection koleksi) void clear() object remove(int index) void setElementAt(Object elemen, int index) object get(int index) object firstElement() object lastElement() int indexOf(Object Element) Keterangan Memasukkan Object ke dalam Vector dengan index yang ditentukan. Menambahkan Object ke dalam Vector. Jika berhasil, nilai Boolean = true. Menambahkan Object ke dalam Vector dengan urutan terakhir. Sama dengan add(Object). Memasukkan Object dengan index yang ditentukan. Sama dengan add (int, Object) Menambahkan elemen-elemen dari suatu koleksi. Jika berhasil akan dikembalikan nilai true. Menghapus semua elemen dalam Vector. Menghapus objek dengan index yang ditentukan dan mengembalikan referensi Object tersebut. Menambahkan Object ke dalam index tertentu dengan menimpanya. Jadi, Object lama akan hilang. Mengambalikan referensi Object pada index tertentu. Mengembalikan Object dengan index = 0. Mengembalikan Object pada index terakhir. Mengembalikan nilai index dari Object yang dicari. Jika jumlah

object lebih dari satu, maka hanya index pertama saja yang ditampilkan. Sedangkan jika tidak ditemukan, nilai -1 akan dikembalikan. object[] toArray() Mengambalikan array Object dari Vector.

5. HashMap HashMap merupakan koleksi yang memetakan kunci (key) ke dalam nilai (value). Kunci dan nilai dalam HashMap boleh di set dengan null. Class ini mengimplementasikan interface Map. HashMap sangat cocok digunakan pada data cukup kompleks. Dengan demikian, programmer tidak harus menghafal letak index seperti pada array dan collection class sequence lainnya. Metode void clear() boolean isEmpty() int size() boolean containsKey(Object key) boolean containsValue(Object value) object get(Object key) setkeySet() Mengembalikan nilai Object dengan key tertentu. Mengambil key dan dimasukkan ke dalam Set. Key tidak mungkin ada yang sama sehingga tidak menimbulkan masalah jika diubah ke dalam format Set. object put(Object key, Object value). object remove(Object key) Membuang objek dari HashMap. Menambah elemen ke dalam HashMap. Keterangan Menghapus semua elemen dalam HashMap sehingga ukurannya menjadi 0. Nilai true dikembalikan jika tidak ada elemendi dalam. Mengambalikan jumlah elemen dalam HashMap. Nilai True jika key ditemukan dalam HashMap. Nilai true jika value ditemukan dalam HashMap.

Berikut contoh penggunaan dan pengolahan data dengan HashMap. 1. 2. 3. 4. 5. 6. 7. 8. public class HashMapz { public static void main(String[] args) { HashMap map = new HashMap(); map.put("Nama","Andi"); map.put("NIM",new Integer(12345)); import java.util.HashMap; import java.util.Set;

9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. } }

map.put("Alamat", "Malang"); System.out.println("Ukuran hashMap : "+map.size()); map.put("Email", "Andi@yahoo.com"); Object email = map.get("Email"); System.out.println("Email nya : "+email); boolean containKey = map.containsKey("NIM"); System.out.println("Has key (NIM): "+containKey); Object removed = map.remove("NIM"); System.out.println("Removed : "+removed); System.out.println("Size baru : "+map.size()); Set set = map.keySet(); System.out.println("Key Set size: "+set.size()); boolean removedFromSet = set.remove("Alamat"); System.out.println("Alamat: "+removedFromSet); System.out.println("Size: "+map.size()); Collection values = map.values(); System.out.println("Collection size: "+values.size());

6. Interface Iterator Interface Iterator merupakan fasilitas pada Java API yang dapat digunakan untuk melakukan iterasi komponen-komponen dalam Koleksi. Terdapat tiga metode dalam interface Iterator yang sering digunakan. Metode hasNext() next() Keterangan Menentukan apakah masih ada sisa koleksi. Mengembalikan elemen objek pada koleksi. Jika sudah tidaka ada elemen lagi namun berusaha diambil, akan muncul pesan, NoSuchElementException. remove() Menghapus elemen yang terakhir kali diakses oleh Iterator.

Penggunaan interface Iterator dimulai dengan deklarasi Iterator Iterator it = v.iterartor(); Setelah itu, pengolahan data dapat dilakukan menggunakan perulangan dan memanfaatkan metode hasNext() dan next().

while(v.hasNext()){ Object ob =v.next(); System.out.println(v); } for(Iterator i = v.iterator();i.hasNext();){ String name = (String) i.next(); System.out.println(name); }

7. Stack Stack merupakan koleksi yang pengambilan dan penyimpanan data di dalamnya menggunakan mekanisme last in first out (LIFO). Artinya, data yang terakhir ditambahkan akan pertama kali dikeluarkan.

Posisi atas

Elemen 3 Elemen 2 Elemen 1 Elemen 0 Posisi bawah

Dengan stack, data di posisi paling atas diolah lebih dulu


Metode Int getSize() E peek() E pop() E push() Boolean isEmpty() Keterangan Mengembalikan jumlah elemen dalah stack yang berada di posisi paling atas. Mengembalikan elemen stack paling atas. Mengembalikan sekaligus membuang elemen stack yang berada di posisi paling atas. Menambahkan elemen baru di posisi paling atas stack. Jika stack belum ada isinya, dikembalikan nilai true.

Berikut cotoh kode program yang menggunakan stack, generic, dan iterator untuk pengolahan data.

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

import java.util.Iterator; import java.util.Stack; public class Stackz { public static void main(String[] args) { Stack<String> s = new Stack<String>(); s.push("Satu"); s.push("Dua"); s.push("Tiga"); s.push("Empat"); s.push("Lima"); s.pop(); String s1 = s.pop(); String s2 = s.peek(); int o = s.search("Dua"); boolean isEmpty = s.empty(); for(Iterator ite = s.iterator();ite.hasNext();) { System.out.println(ite.next()); } System.out.println("Index dengan elemen \"Dua\": "+o); System.out.println("Apakah kosong? "+isEmpty); } }

1.2 Generic
Generic merupakan implementasi tipe data pada koleksi. Tanpa adanya generic, kita dapat memasukkan tipe data yang berbeda-beda dalam sebuah koleksi. Baru ketika data tersebut diambil, maka perlu dilakukan casting. Misal pada koleksi ArrayList, objek dapat ditambahkan dengan perintah berikut : public boolean add(Object o){ //statement(s) } Sedangkan untuk pengambilan data, harus dilakukan casting tipe data sebagai berikut : Mahasiswa e = (Mahasiswa) organisasi.get(0); Artinya, koleksi ArrayList organisasi memiliki elemen dengan tipe objek Mahasiswa. Masalah dapat timbul jika ada beberapa elemen yang bukan bertipe Mahasiswa. Elemen lain mungkin saja ada karena semua Object dapat ditambahkan dengan metode add(). Deklarasi dan Penerapan Generic Tipe generic pada koleksi dapat diterapkan dengan memambahkan tanda<>. ArrayList<Mahasiswa> organisasi; Vector<integer> kodePos = new Vector<Integer>; Jika dipaksakan menambahkan elemen dengan tipe yang berbeda maka akan keluar error misal : kodePos.add(belum ada); //akan terjadi error Dengan adanya generic, program lebih handal karen dapat mencegah kesalahan-kesalahan karena kelalaian programmer.

II. MATERI PRAKTIKUM


Percobaan 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 public class Barang { private String nama_barang; private int jumlah; public Barang(String nama_barang, int jumlah) { this.nama_barang = nama_barang; this.jumlah = jumlah; } public int getJumlah() { return jumlah; } public void setJumlah(int jumlah) { this.jumlah = jumlah; } public String getNama_barang() { return nama_barang; } public void setNama_barang(String nama_barang) { this.nama_barang = nama_barang; } }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

import java.util.ArrayList; public class ShoopingCart <t> { private ArrayList<t> goodies; private String nama; private t item; public ShoopingCart(String nama) { this.nama=nama; this.goodies=new ArrayList<t>(); } public String getNama() { return nama; } public ArrayList<t> getGoodies() { return goodies; }

25 26 27 28 29 30 31 32 33 34 35 }

public t getItem(int idx) { return this.getGoodies().get(idx); }

public void addItem(t item) { this.goodies.add(item); }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

public class Main { public static void main(String[] args) { shoopingCart <Barang> sc = new ShoopingCart("Doni"); sc.addItem(new Barang("permen", 3)); sc.addItem(new Barang("cokelat", 46)); System.out.println("nama :" + sc.getNama()); System.out.println("Pesanan anda "); for(Barang b: sc.getGoodies()) { System.out.println("nama barang :"+b.getNama_barang()); System.out.println("Jumlah :"+b.getJumlah()); } } }

Pertanyaan : 1. Pada kelas ShoopingCart pada baris 1 apa fungsi <t> ? 2. Collection apa yang digunakan pada kelas ShoopingCart ? 3. Pada kelas shoopingCart apa maksud baris ke 34? 4. Pada kelas shoopingCart apa maksud baris ke 26? 5. Pada kelas ShoopingCart ubah Collection ArrayList menjadi List dengan menambah package java.util.List, apa yang terjadi? Jelaskan 6. Pada kelas ShoopingCart ubah Collection ArrayList menjadi Vector dengan menambah package java.util.Vector, apa yang terjadi? Jelaskan

7. Pada kelas Main apa maksud dari baris ke 6 ? 8. Pada kelas Main jelaskan maksud baris ke 16 ? 9. Pada kelas Main, tambahkan isi sc hingga elemen yang dimilikinya mencapai 10! 10. Bagaimana caranya untuk menampilkan sc item ke-4 s.d ke-8! 11. Apakah isi dari collection selalu dapat diurutkan!

Anda mungkin juga menyukai