Java Generic & Collection

dokumen-dokumen yang mirip
Generics. Prepared by Viska Mutiawani. 1

Pemrograman Berorientasi. Array dan Collections

IMPLEMENTASI STRUKTUR DATA LIST, QUEUE DAN STACK DALAM JAVA

Gambar 1. Single Linked List

Score: 94.0 Persentage: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

Gambar 1. Single Linked List

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

Gambar 1. Single Linked List

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

Pemrograman Berorientasi Objek Collection dan Multithreading. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

MODUL III ARRAYLIST TUGAS PENDAHULUAN

IF PEMROGRAMAN LANJUT GENERIC. Oleh : Andri Heryandi, M.T.

BAB 2 COLLECTION & THREAD

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

PEMROGRAMAN BERORIENTASI OBJEK COLLECTION DAN MULTITHREADING. ADAM MUKHARIL BACHTIAR TEKNIK INFORMATIKA UNIKOM

KOLEKSI OBJECT. Farah Zakiyah Rahmanti, M.T Universitas Dian Nuswantoro

Pemrograman Berbasis Objek. Collections. Politeknik Elektronika Negeri Surabaya

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

Belajar ArrayList di Java

Collections. Collections Framework

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Jobsheet 16 String dan Collection (List, Set, Map)

Boxing & AutoBoxing Java Collection Framework. Collection List Map Set. Generics vs Inheritance

Konstruktor dan Polimorfisme

INSTITUT TEKNOLOGI SUMATERA COLLECTION: SET DAN MAP

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Algoritma & Struktur Data. Array. Oleh : Nur Hayatin, M.Kom

Konsep Lanjut Pemrograman Objek

KUM 3 IMPLEMENTASI LIST

Praktikum KPLBO Final Object Concept I

Konsep Pemrograman Berorientasi Pada Objek Dengan. Java Netbeans

Java Collections Framework

Algoritma Pemrograman [BS204]

2015 BAHASA PEMROGRAMAN I. Pertemuan VI Inheritance (Pewarisan)

Grouping Object. Viska Mutiawani, M.Sc

BAB 3 CLASS DAN OBJECT. Tujuan:

Gambar 1. Single Linked List

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

LAPORAN RESMI PRAKTIKUM BAHASA PEMROGRAMAN

Modul ini mengenalkan Anda konsep dasar mengenai Java generic types.

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

Pemrograman Berorientasi Objek Danu Wira Pangestu

Praktikum 3 Konsep Class, Attribute dan Method

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Pemrograman Berorientasi. Abstract & Interface

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Bab 3. Modul ini mengenalkan suatu teknik pemrograman yang lebih tinggi. Dalam bagian ini Anda akan mempelajari rekursif dan tipe data abstrak.

CLASS & OBJECT DALAM JAVA (IS1313)

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

Pemrograman Berorientasi Objek INHERITANCE

B.1 Mengurutkan Obyek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

A. TUJUAN PEMBELAJARAN 1. Memahami konsep Class LinkedList di Collection 2. Memahami penggunaan method-method pada Class LinkedList.

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Inheritance dan Kata Kunci static

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Badiyanto, S.Kom., M.Kom. PBO java

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

ABSTRACT DATA TYPE (ADT) Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc

Praktikum KPLBO Class dan Object I

IKG2I4 / Software Project I

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

OVERLOADING, CONSTRUCTOR DAN DESTRUCTOR. Dewi Sartika, M.Kom

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Politeknik Elektronika Negeri Surabaya

Pemrograman Lanjut Jurusan S1 Teknik Informatika. 9/17/2012 Ratno

PRAKTIKUM I Class dan Obyek

Preliminary Test Axioo Class Program

Bahasa Pemrograman 2.

Preliminary Test Axioo Class Program

Object Oriented Programming

C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.!

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

Modul 3: Tipe Data Abstrak Dinamis List, LinkList dan Model Antrian Stack & Queue

Algoritma dan Struktur Data. Queue

Linked List dan Implementasinya dalam Bahasa Java

Array Multidimensi. Pemrograman Dasar. Java

Pertemuan 4 Halaman 1/1. Class Inheritance

LAMPIRAN 1. Listing Program

PAKET (PACKAGE) 20 Januari 2012

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

Bab 8. Dasar-Dasar OOP

Membuat dan Menggunakan Class

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Algoritma dan Struktur Data STACK

Modul Praktikum Bahasa Pemrograman 1

BAB 5 INTERAKSI OBJEK. Tujuan:

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

CLASS PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM JOGJAKARTA

Pemrograman Berorientasi. Class dan Obyek 2

Transkripsi:

UNIVERSITAS KOMPUTER INDONESIA Java Generic & Collection Unikom Programming Team Eko Kurniawan Khannedy 5/1/2010

Java Generic Kenapa Pemrograman Generic? Generic Programming artinya kode yang dapat digunakan oleh beberapa objek yang tipenya berlainan. Misal kita memiliki kelas KoleksiString, KoleksiInteger dan KoleksiDouble, dengan menggunakan Generic Programming, kita dapat membuat kelas Koleksi yang dapat menampung data String, Integer maupun Double. Kelas Generic Misal sebelum menggunakan Generic Programming, kita akan membuat kelas Koleksi untuk menampung String seperti ini : public class KoleksiString { private String data; public String getdata() { public void setdata(string data) { Untuk menampung data Integer : public class KoleksiInteger { private int data; public int getdata() { public void setdata(int data) { Andai kita membutuhkan banyak data yang akan di tampung dalam kelas Koleksi, maka mau tidak mau kita harus membuat setiap kelas Koleksi untuk tipe tertentu. Hal ini sangat melelahkan jika dilakukan :( Dengan demikian, diperlukan Generic Programming untuk mengatasi masalah tersebut. Jika kita menggunakan Generic Programming, maka kita hanya cukup membuat satu buat kelas Koleksi, dan kelas tersebut dapat menampung seluruh objek dengan tipe data yang berbeda. public class Koleksi<T> { private T data; public T getdata() { public void setdata(t data) { Dengan menggunakan Generic Programming diatas, kita dapat membuat Koleksi yang dapat menampung object dengan tipe apapun. Namun perlu diingat, karena Generic Programming hanya dapat menggunakan object, sehingga data primitive harus diimplementasikan dalam objek, misal int menjadi Integer, double menjadi Double. import khannedy.unikom.generic.data.koleksi;

Koleksi<String> a = new Koleksi<String>(); a.setdata("string"); Koleksi<Integer> b = new Koleksi<Integer>(); b.setdata(1); Pendeklarasian Generic Programming ditandai dengan simbol yang diawali tanda (<) dan diakhiri tanda (>), setelah nama Kelas : class Koleksi<T> Dari kode diatas, berarti kita membuat simbol generic dengan simbol T, sehingga T dianggap tipe data dalam lingkup kelas tersebut. Saat pendeklarasian objek Koleksi, maka kita harus menentukan tipe T tersebut : Koleksi<String> a = new Koleksi<String>(); Atau : public <T> void kosongkan(t[] data) Perlu diingat jika Generic Programming dalam sebuah Metode, hanya berlaku untuk metode tersebut, tidak berlaku untuk metode yang lain dalam kelas yang sama, sehingga dibawah ini adalah salah : public class Utilitas { public <T> T ambiltengah(t[] data) { return data[data.length / 2]; // simbol T tidak dikenal public T ambilawal(t[] data){ return data[0]; Kode diatas berarti kita mengganti simbol T dengan tipe data String. Metode Generic Selain dapat diimplementasikan dalam kelas, Generic Programming juga dapat diimplementasikan dalam sebuah metode. public class Utilitas { public static <T> T ambiltengah(t[] data) { return data[data.length / 2]; Untuk membuat generic dalam metode, simbol dideklarasikan sebelum return value, misal : public <T> T ambiltengah(t[] data) Pewarisan Dalam Generic Programming pun dikenal dengan pewarisan, pewarisan ini digunakan untuk membatasi masukkan data yang dapat digunakan dalam kode generic. Secara default simbol pada Generic Programming merupakan turunan kelas Object, sehingga tipe data apapun dapat masuk ke kode generic tersebut. public class Koleksi<T extends Object> Dan jika kita ingin membatasi kode generic yang kita buat untuk kelas tertentu dan turunannya, maka kita bisa memanfaatkan fitur pewarisan pada Generic Programming. Misal, kita memiliki kelas Musisi, dan kelas MusisiBerbakat, dimana kelas MusisiBerbakat tersebut adalah turunan dari kelas Musisi.

public class Musisi { public void nyanyi() { // nyanyi public class MusisiBerbakat extends Musisi{ public void dansa() { // dansa Jika kita akan membatasi kode generic yang akan kita buat, hanya dapat digunakan untuk kelas Musisi dan keturunannya, maka kita dapat membuatnya seperti ini : public class Koleksi <T extends Musisi> { private T data; public T getdata() { tentukan. Misal pada kode diatas, kelas Musisi memiliki metode nyanyi(), dengan mewarisi kelas Musisi dalam kode generic yang kita buat, maka kita dapat memanggil seluruh metode yang ada pada kelas Musisi dalam kode generic kita : public class Koleksi <T extends Musisi> { private T data; public T getdata() { public void setdata(t data) { public void nyanyieuy(){ if(this.data!= null){ this.data.nyanyi(); Jika kita tidak mewarisi sebuah kelas, maka metode yang hanya dapat dipanggil hanyalah metode yang ada pada kelas Object. public void setdata(t data) { Dengan demikian, maka kelas Koleksi yang baru, hanya dapat digunakan oleh kelas Musisi dan keturunannya. Pewarisan tidak hanya dapat diterapkan pada kelas generic, dapat juda di metode generic. Selain membatasi, dengan pewarisan kita juga dapat memanggil metode dari kelas yang kita

Java Collection Java Collection merupakan kumpulankumpulan kelas yang digunakan sebagai kelas struktur data, seperti array, linkedlist, stack, tree dan lain-lain. Seluruh kelas Java Collection merupakan turunan kelas java.lang.iterable. Sehingga dapat digunakan dalam perulangan foreach. Kode diatas, berarti kita membuat ArrayList yang digunakan untuk menampung data String. Untuk menambah data yang ada dalam ArrayList, kita dapat menggunakan metode add(t data) : list.add("data Baru"); Dan untuk mengubah data yang telah ada dalam ArrayList, kita bisa menggunakan metode set(int index, T databaru) : list.set(0, "Data Baru"); String[] data = new String[10]; for (String a : data) { // manipulasi a Index dalam ArrayList, sama dengan pada Array biasa, dimulai dari 0 dan diakhiri dengan panjangarray-1. Untuk mendapatkan data yang ada dalam ArrayList, kita dapat menggunakan metode get(int index) : Seluruh kelas-kelas Java Collection merupakan kelas generic, sehingga dapat digunakan untuk menampung objek dengan berbadai tipe data. ArrayList ArrayList merupakan struktur data Array yang dapat berkembang kapasitasnya secara otomatis, sehingga berbeda dengan Array biasa yang ukuran Array-nya terbatas saat dideklarasikan. import java.util.arraylist; ArrayList<String> list = new ArrayList<String>(); String data = list.get(10); Artinya kita menggambil data pada ArrayList yang ke-11, hal ini dikarenakan index diawali dari 0. Untuk menghapus data dalam ArrayList, kita dapat menggunakan metode remove(int index) : list.remove(8); Sama seperti metode get() dan set(), index pada metode remove() pun diawali dengan index ke-0. Untuk mendapatkan total data yang ada dalam ArrayList, kita dapat menggunakan metode size() : int total = list.size();

Kekurangan ArrayList adalah, saat kita menghapus data maka data pada index setelah data yang dihapus, akan diubah indexnya ke index sebelumnya. Misal jika kita memiliki 100 data dalam ArrayList, lalu kita menghapus data index ke 20, maka proses yang terjadi adalah : 1. Hapus data ke 21 2. Tempatkan data ke 22 menjadi ke 21 3. Tempatkan data ke 23 menjadi ke 22 4. Tempatkan data ke 24 menjadi ke 23 5. Dan seterusnya hingga data terakhi Sehinga ArrayList tidak cocok jika digunakan untuk menampung data yang banyak menlakukan proses penghapusan data. LinkedList LinkedList merupakan struktur data yang setiap data nya memiliki pointer ke data berikutnya dan data sebelumnya. Berbeda dengan ArrayList, pada LinkedList data tidak disimpan pada index. Seluruh operasi yang ada pada LinkedList hampir sama dengan yang ada pada ArrayList. Sehingga penggunaanya cukup sama dengan ArrayList. import java.util.linkedlist; LinkedList<String> list = new LinkedList<String>(); // tambah data list.add("data Baru"); // ubah data list.set(0, "Data Baru Lagi"); // hapus data list.remove(0); LinkedList merupakan sturktur data yang dapat digunakan sebagai solusi kekurangan pada ArrayList, yaitu pada saat penghapusan data. Pada LinkedList, penghapusan data hanya melakukan 3 langkah, misal kita menghapus data ke 5 : 1. Hapus data ke-5 2. Ubah pointer next data ke-4 menjadi mengacu ke data ke-6 3. Ubah pointer prev data ke-6 menjadi mengacu ke data ke-4 // total data int total = list.size(); Namun yang menjadi permasalahan dalam LinkedList yaitu saat proses, pencarian. Dikarenakan pada LinkedList, data tidak memiliki index, maka saat terjadi proses pencarian, maka dilakukan secara sequensial, sehingga dapat memperlambat proses pencarian.

Set Set merupakan struktur data yang digunakan untuk menampung data yang datanya tidak boleh ada yang sama. Jika data yang sama, maka data hanya akan ditampung sekali. Set merupakan Interface, sehingga dibutuhkan implementasi sebuah kelas untuk menggunakan Set. Dalam Java Collection, implementasi defaultnya adalah HashSet, dimana HashSet melakukan pengecekan duplikasi berdasarkan metode equals() dan hashcode(). Secara default hashcode() setiap objek itu unik dan defaulnya metode equals() membandingkan objek pada memori, jika lokasi memorinya sama, maka dianggap sama, namun kita dapat membuat implementasi hashcode() sendiri, misal untuk Mahasiswa, mahasiswa disebut sama jika memiliki Nim yang sama, Mahasiswa tidak dianggap sama jika Nama nya sana, namun Nim nya berbeda, sehingga kita dapat membuat kelas Mahasiswa seperti berikut : public class Mahasiswa { private int nim; @Override public boolean equals(object obj) { Mahasiswa m = (Mahasiswa) obj; return m.nim == nim; @Override public int hashcode() { return nim; Dengan demikian, maka kelas Mahasiswa, hashcode() nya akan dicek berdasarkan Nim : import java.util.hashset; import java.util.set; import khannedy.unikom.generic.data.mahasiswa; Set<Mahasiswa> set = new HashSet<Mahasiswa>(); Mahasiswa a = new Mahasiswa(); a.setnim(1); a.setnama("eko Kurniawan Khannedy"); set.add(a); private String nama; public String getnama() { return nama; Mahasiswa b = new Mahasiswa(); b.setnim(1); b.setnama("tukul Arwana"); set.add(b); public void setnama(string nama) { this.nama = nama; public int getnim() { return nim; for (Mahasiswa m : set) { System.out.println("Nim : " + m.getnim()); System.out.println("Nama : " + m.getnama()); public void setnim(int nim) { this.nim = nim; Maka hasilnya adalah :

Nim : 1 Nama : Eko Kurniawan Khannedy Artinya hanya mahasiswa dengan nama Eko Kurniawan Khannedy saja yang masuk, sedangkan Tukul Arwana tidak masuk, kenapa? Hal ini dikarenakan memiliki nim yang sama yaitu 1. TreeSet TreeSet merupakan struktur data dimana data yang ditampungnya akan otomatis di urutkan berdasarkan Comparator. Interfaces Comparator<T>() { public int compare(t o1, T o2) { return 1; else { return 0; Dan jika kita implementasikan dalam TreeSet : import java.util.treeset; import khannedy.unikom.generic.data.mahasiswa; PembandingMahasiswa pembanding = new PembandingMahasiswa(); Dalam Comparator, kita diwajibkan membandingkan 2 buat objek dengan tipe data yang sama. Jika o1 lebih besar dari o2 maka return nya harus positif, jika lebih kecil maka return nya harus negatif, jika sama maka return nya harus 0. TreeSet<Mahasiswa> set = new TreeSet<Mahasiswa> (pembanding); Mahasiswa a = new Mahasiswa(); a.setnim(1); a.setnama("eko Kurniawan Khannedy"); set.add(a); Contoh, pada kelas Mahasiswa sebelumnya, kita akan membandingkan tiap mahasiswa berdasarkan nim nya, namun dibandingkannya secara terbaik, artinya data akan diurutkan secara DESC. import java.util.comparator; import khannedy.unikom.generic.data.mahasiswa; public class PembandingMahasiswa implements Comparator<Mahasiswa> { Mahasiswa b = new Mahasiswa(); b.setnim(2); b.setnama("tukul Arwana"); set.add(b); for (Mahasiswa m : set) { System.out.println("Nim : " + m.getnim()); System.out.println("Nama : " + m.getnama()); public int compare(mahasiswa o1, Mahasiswa o2) { if (o1.getnim() > o2.getnim()) { return -1; else if (o1.getnim() < o2.getnim()) { Maka hasilny adalah : Nim : 2 Nama : Tukul Arwana Nim : 1 Nama : Eko Kurniawan Khannedy

Collection yang Lain Ada banyak sekali Collection dalam Java, seperti Stack, Vector, Map, Queue dan lainlain. Resource Belajar http://java.sun.com/docs/books/tutorial/extra/generics/index.html http://java.sun.com/docs/books/tutorial/collections/index.html Ayo Berkomunitas!!! Milis Unikom Programming Team : http://tiny.cc/milis-unikom-prog-team Facebook Programming Team : http://tiny.cc/fb-unikom-prog-team OpenSource University Meetup : http://osum.sun.com/ OpenSource University Meetup UNIKOM : http://osum.sun.com/group/unikom