SlideShare uma empresa Scribd logo
1 de 9
UNIVERSITAS KOMPUTER INDONESIA




Java Generic & Collection
    Unikom Programming Team
            Eko Kurniawan Khannedy
                  5/1/2010
Java Generic                                       }
                                               }
                                               Andai kita membutuhkan banyak data yang
Kenapa Pemrograman Generic?                    akan di tampung dalam kelas Koleksi, maka
                                               mau tidak mau kita harus membuat setiap
Generic Programming artinya kode yang          kelas Koleksi untuk tipe tertentu. Hal ini
dapat digunakan oleh beberapa objek yang       sangat melelahkan jika dilakukan :(
tipenya berlainan. Misal kita memiliki kelas
KoleksiString,      KoleksiInteger      dan    Dengan demikian, diperlukan Generic
KoleksiDouble, dengan menggunakan Generic      Programming untuk mengatasi masalah
Programming, kita dapat membuat kelas          tersebut. Jika kita menggunakan Generic
Koleksi yang dapat menampung data String,      Programming, maka kita hanya cukup
Integer maupun Double.                         membuat satu buat kelas Koleksi, dan kelas
                                               tersebut dapat menampung seluruh objek
Kelas Generic                                  dengan tipe data yang berbeda.

Misal sebelum menggunakan Generic              package khannedy.unikom.generic.data;
Programming, kita akan membuat kelas
Koleksi untuk menampung String seperti ini :   public class Koleksi<T> {

package khannedy.unikom.generic.data;              private T data;

public class KoleksiString {                       public T getData() {
                                                     return data;
    private String data;                           }

    public String getData() {                      public void setData(T data) {
      return data;                                   this.data = data;
    }                                              }
                                               }
    public void setData(String data) {
      this.data = data;
    }                                          Dengan menggunakan Generic Programming
}                                              diatas, kita dapat membuat Koleksi yang
                                               dapat menampung object dengan tipe
                                               apapun. Namun perlu diingat, karena Generic
Untuk menampung data Integer :                 Programming hanya dapat menggunakan
                                               object, sehingga data primitive         harus
package khannedy.unikom.generic.data;
                                               diimplementasikan dalam objek, misal int
public class KoleksiInteger {                  menjadi Integer, double menjadi Double.

    private int data;                          package khannedy.unikom.generic;

    public int getData() {                     import
      return data;                             khannedy.unikom.generic.data.Koleksi;
    }
                                               public class Main {
    public void setData(int data) {
      this.data = data;                            public static void main(String[] args) {
Koleksi<String> a = new Koleksi<String>();   Atau :
      a.setData("String");
                                                   public <T> void kosongkan(T[] data)
    Koleksi<Integer> b = new
Koleksi<Integer>();
    b.setData(1);                                  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 :
Pendeklarasian Generic Programming ditandai
dengan simbol yang diawali tanda (<) dan           package khannedy.unikom.generic.data;
diakhiri tanda (>), setelah nama Kelas :
                                                   public class Utilitas {
class Koleksi<T>
                                                       public <T> T ambilTengah(T[] data) {
                                                         return data[data.length / 2];
Dari kode diatas, berarti kita membuat simbol          }
generic dengan simbol T, sehingga T dianggap
tipe data dalam lingkup kelas tersebut. Saat           // simbol T tidak dikenal
pendeklarasian objek Koleksi, maka kita harus          public T ambilAwal(T[] data){
menentukan tipe T tersebut :                              return data[0];
                                                       }
Koleksi<String> a = new Koleksi<String>();         }


Kode diatas berarti kita mengganti simbol T        Pewarisan
dengan tipe data String.
                                                   Dalam Generic Programming pun dikenal
Metode Generic                                     dengan pewarisan, pewarisan ini digunakan
                                                   untuk membatasi masukkan data yang dapat
Selain dapat diimplementasikan dalam kelas,        digunakan dalam kode generic. Secara default
Generic    Programming        juga   dapat         simbol     pada   Generic      Programming
diimplementasikan dalam sebuah metode.             merupakan turunan kelas Object, sehingga
                                                   tipe data apapun dapat masuk ke kode
package khannedy.unikom.generic.data;
                                                   generic tersebut.
public class Utilitas {
                                                   public class Koleksi<T extends Object>
    public static <T> T ambilTengah(T[] data) {
      return data[data.length / 2];                Dan jika kita ingin membatasi kode generic
    }
                                                   yang kita buat untuk kelas tertentu dan
}
                                                   turunannya, maka kita bisa memanfaatkan
                                                   fitur pewarisan pada Generic Programming.
Untuk membuat generic dalam metode,
simbol dideklarasikan sebelum return value,        Misal, kita memiliki kelas Musisi, dan kelas
misal :                                            MusisiBerbakat, dimana kelas MusisiBerbakat
                                                   tersebut adalah turunan dari kelas Musisi.
public <T> T ambilTengah(T[] data)
package khannedy.unikom.generic.data;          tentukan. Misal pada kode diatas, kelas Musisi
                                               memiliki metode nyanyi(), dengan mewarisi
public class Musisi {                          kelas Musisi dalam kode generic yang kita
                                               buat, maka kita dapat memanggil seluruh
    public void nyanyi() {
                                               metode yang ada pada kelas Musisi dalam
      // nyanyi
    }                                          kode generic kita :
}
                                               package khannedy.unikom.generic.data;

package khannedy.unikom.generic.data;          public class Koleksi
                                                   <T extends Musisi> {
public class MusisiBerbakat
    extends Musisi{                                private T data;

    public void dansa() {                          public T getData() {
      // dansa                                       return data;
    }                                              }
}
                                                   public void setData(T data) {
                                                     this.data = data;
Jika kita akan membatasi kode generic yang         }
akan kita buat, hanya dapat digunakan untuk
                                                   public void nyanyiEuy(){
kelas Musisi dan keturunannya, maka kita
                                                     if(this.data != null){
dapat membuatnya seperti ini :                          this.data.nyanyi();
                                                     }
package khannedy.unikom.generic.data;              }
                                               }
public class Koleksi
    <T extends Musisi> {
                                               Jika kita tidak mewarisi sebuah kelas, maka
    private T data;
                                               metode yang hanya dapat dipanggil
    public T getData() {                       hanyalah metode yang ada pada kelas
      return data;                             Object.
    }

    public void setData(T data) {
      this.data = 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                                    Kode diatas, berarti kita membuat ArrayList
                                                   yang digunakan untuk menampung data
                                                   String. Untuk menambah data yang ada dalam
Java Collection merupakan kumpulan-                ArrayList, kita dapat menggunakan metode
kumpulan kelas yang digunakan sebagai kelas        add(T data) :
struktur data, seperti array, linkedlist, stack,
tree dan lain-lain. Seluruh kelas Java             list.add("Data Baru");
Collection    merupakan      turunan      kelas
java.lang.Iterable. Sehingga dapat digunakan
                                                   Dan untuk mengubah data yang telah ada
dalam perulangan foreach.
                                                   dalam ArrayList, kita bisa menggunakan
package khannedy.unikom.generic;                   metode set(int index, T dataBaru) :

public class Main {                                list.set(0, "Data Baru");

    public static void main(String[] args) {
      String[] data = new String[10];              Index dalam ArrayList, sama dengan pada
      for (String a : data) {                      Array biasa, dimulai dari 0 dan diakhiri dengan
        // manipulasi a                            panjangArray-1.
      }
    }                                              Untuk mendapatkan data yang ada dalam
}                                                  ArrayList, kita dapat menggunakan metode
                                                   get(int index) :

Seluruh kelas-kelas Java Collection merupakan      String data = list.get(10);
kelas generic, sehingga dapat digunakan
untuk menampung objek dengan berbadai
                                                   Artinya kita menggambil data pada ArrayList
tipe data.
                                                   yang ke-11, hal ini dikarenakan index diawali
ArrayList                                          dari 0.

ArrayList merupakan struktur data Array yang       Untuk menghapus data dalam ArrayList, kita
dapat berkembang kapasitasnya secara               dapat menggunakan metode remove(int
otomatis, sehingga berbeda dengan Array            index) :
biasa yang ukuran Array-nya terbatas saat
                                                   list.remove(8);
dideklarasikan.

package khannedy.unikom.generic;                   Sama seperti metode get() dan set(), index
                                                   pada metode remove() pun diawali dengan
import java.util.ArrayList;
                                                   index ke-0.
public class Main {
                                                   Untuk mendapatkan total data yang ada
    public static void main(String[] args) {       dalam ArrayList, kita dapat menggunakan
      ArrayList<String> list =                     metode size() :
              new ArrayList<String>();
    }                                              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                        Seluruh operasi yang ada pada LinkedList
   2.   Tempatkan data ke 22 menjadi ke 21      hampir sama dengan yang ada pada ArrayList.
   3.   Tempatkan data ke 23 menjadi ke 22      Sehingga penggunaanya cukup sama dengan
   4.   Tempatkan data ke 24 menjadi ke 23      ArrayList.
   5.   Dan seterusnya hingga data terakhi
                                                package khannedy.unikom.generic;
Sehinga ArrayList tidak cocok jika digunakan
untuk menampung data yang banyak                import java.util.LinkedList;
menlakukan proses penghapusan data.
                                                public class Main {
LinkedList
                                                    public static void main(String[] args) {
LinkedList merupakan struktur data yang               LinkedList<String> list =
setiap data nya memiliki pointer ke data                   new LinkedList<String>();
berikutnya dan data sebelumnya. Berbeda
                                                        // tambah data
dengan ArrayList, pada LinkedList data tidak            list.add("Data Baru");
disimpan pada index.
                                                        // ubah data
                                                        list.set(0, "Data Baru Lagi");

                                                        // hapus data
                                                        list.remove(0);

                                                        // total data
                                                        int total = list.size();
                                                    }
                                                }
LinkedList merupakan sturktur data yang
dapat digunakan sebagai solusi kekurangan
pada ArrayList, yaitu pada saat penghapusan     Namun yang menjadi permasalahan dalam
data. Pada LinkedList, penghapusan data         LinkedList yaitu saat proses, pencarian.
hanya melakukan 3 langkah, misal kita           Dikarenakan pada LinkedList, data tidak
menghapus data ke 5 :                           memiliki index, maka saat terjadi proses
                                                pencarian, maka dilakukan secara sequensial,
   1. Hapus data ke-5                           sehingga dapat memperlambat proses
   2. Ubah pointer next data ke-4 menjadi       pencarian.
      mengacu ke data ke-6
   3. Ubah pointer prev data ke-6 menjadi
      mengacu ke data ke-4
Set                                              }

Set merupakan struktur data yang digunakan       @Override
untuk menampung data yang datanya tidak          public boolean equals(Object obj) {
                                                   Mahasiswa m = (Mahasiswa) obj;
boleh ada yang sama. Jika data yang sama,
                                                   return m.nim == nim;
maka data hanya akan ditampung sekali.
                                                 }
Set    merupakan      Interface,  sehingga
                                                 @Override
dibutuhkan implementasi sebuah kelas untuk       public int hashCode() {
menggunakan Set. Dalam Java Collection,            return nim;
implementasi defaultnya adalah HashSet,          }
dimana HashSet melakukan pengecekan          }
duplikasi berdasarkan metode equals() dan
hashCode().
                                             Dengan demikian, maka kelas Mahasiswa,
Secara default hashCode() setiap objek itu   hashCode()–nya akan dicek berdasarkan Nim :
unik dan defaulnya metode equals()
                                             package khannedy.unikom.generic;
membandingkan objek pada memori, jika
lokasi memorinya sama, maka dianggap sama,   import java.util.HashSet;
namun kita dapat membuat implementasi        import java.util.Set;
hashCode() sendiri, misal untuk Mahasiswa,   import
mahasiswa disebut sama jika memiliki Nim     khannedy.unikom.generic.data.Mahasiswa;
yang sama, Mahasiswa tidak dianggap sama
                                             public class Main {
jika Nama nya sana, namun Nim nya berbeda,
sehingga kita dapat membuat kelas                public static void main(String[] args) {
Mahasiswa seperti berikut :                        Set<Mahasiswa> set =
                                                        new HashSet<Mahasiswa>();
package khannedy.unikom.generic.data;
                                                     Mahasiswa a = new Mahasiswa();
public class Mahasiswa {                             a.setNim(1);
                                                     a.setNama("Eko Kurniawan Khannedy");
  private int nim;                                   set.add(a);

  private String nama;                               Mahasiswa b = new Mahasiswa();
                                                     b.setNim(1);
  public String getNama() {                          b.setNama("Tukul Arwana");
    return nama;                                     set.add(b);
  }
                                                     for (Mahasiswa m : set) {
  public void setNama(String nama) {                   System.out.println("Nim : "
    this.nama = nama;                                      + m.getNim());
  }                                                    System.out.println("Nama : "
                                                           + m.getNama());     }
  public int getNim() {                          }
    return nim;                              }
  }

  public void setNim(int nim) {              Maka hasilnya adalah :
    this.nim = nim;
Nim : 1                                                      return 1;
Nama : Eko Kurniawan Khannedy                             } else {
                                                             return 0;
                                                          }
Artinya hanya mahasiswa dengan nama Eko               }
Kurniawan Khannedy saja yang masuk,               }
sedangkan Tukul Arwana tidak masuk,
kenapa? Hal ini dikarenakan memiliki nim
                                                  Dan jika kita implementasikan dalam TreeSet :
yang sama yaitu 1.
                                                  package khannedy.unikom.generic;
TreeSet
                                                  import java.util.TreeSet;
TreeSet merupakan struktur data dimana data       import
yang ditampungnya akan otomatis di urutkan        khannedy.unikom.generic.data.Mahasiswa;
berdasarkan Comparator.
                                                  public class Main {
Interfaces Comparator<T>() {
  public int compare(T o1, T o2) {                    public static void main(String[] args) {
  }                                                     PembandingMahasiswa pembanding =
}                                                            new PembandingMahasiswa();

                                                          TreeSet<Mahasiswa> set =
Dalam     Comparator,     kita     diwajibkan                 new TreeSet<Mahasiswa>
membandingkan 2 buat objek dengan tipe                        (pembanding);
data yang sama. Jika o1 lebih besar dari o2
maka return nya harus positif, jika lebih kecil           Mahasiswa a = new Mahasiswa();
                                                          a.setNim(1);
maka return nya harus negatif, jika sama
                                                          a.setNama("Eko Kurniawan Khannedy");
maka return nya harus 0.                                  set.add(a);
Contoh, pada kelas Mahasiswa sebelumnya,
                                                          Mahasiswa b = new Mahasiswa();
kita akan membandingkan tiap mahasiswa                    b.setNim(2);
berdasarkan       nim       nya,      namun               b.setNama("Tukul Arwana");
dibandingkannya secara terbaik, artinya data              set.add(b);
akan diurutkan secara DESC.
                                                          for (Mahasiswa m : set) {
package khannedy.unikom.generic;                            System.out.println("Nim : "
                                                                + m.getNim());
import java.util.Comparator;                                System.out.println("Nama : "
import                                                          + m.getNama());
khannedy.unikom.generic.data.Mahasiswa;                   }
                                                      }
public class PembandingMahasiswa                  }
    implements Comparator<Mahasiswa> {

  public int compare(Mahasiswa o1,                Maka hasilny adalah :
                       Mahasiswa o2) {
    if (o1.getNim() > o2.getNim()) {              Nim : 2
       return -1;                                 Nama : Tukul Arwana
    } else if (o1.getNim() < o2.getNim()) {       Nim : 1
                                                  Nama : Eko Kurniawan Khannedy
Collection yang Lain

Ada banyak sekali Collection dalam Java,
seperti Stack, Vector, Map, Queue dan lain-
lain.



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

Mais conteúdo relacionado

Mais procurados

Pertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekPertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekI Putu Arya Dharmaadi
 
Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)Rakhmat Dedi Gunawan
 
1 exception handling
1 exception handling1 exception handling
1 exception handlingFajar Baskoro
 
Algoritma dan Struktur Data - Pengenalan Bahasa C++
Algoritma dan Struktur Data - Pengenalan Bahasa C++Algoritma dan Struktur Data - Pengenalan Bahasa C++
Algoritma dan Struktur Data - Pengenalan Bahasa C++KuliahKita
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data TreeMeta N
 
Object oriented programming dengan php
Object oriented programming dengan phpObject oriented programming dengan php
Object oriented programming dengan phpMateri Kuliah Online
 
Data Base Tiket Pesawat
Data Base Tiket PesawatData Base Tiket Pesawat
Data Base Tiket Pesawatnaufals11
 
Pemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar FlutterPemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar FlutterAkhmad Khanif Zyen
 

Mais procurados (20)

Pertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekPertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objek
 
2 alfabet dan string
2 alfabet dan string2 alfabet dan string
2 alfabet dan string
 
Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)Modul PBO Bab-06 - Polimorfisme (Polymorphism)
Modul PBO Bab-06 - Polimorfisme (Polymorphism)
 
Pertemuan 5 Perencanaan Testing
Pertemuan 5 Perencanaan TestingPertemuan 5 Perencanaan Testing
Pertemuan 5 Perencanaan Testing
 
1 exception handling
1 exception handling1 exception handling
1 exception handling
 
Algoritma dan Struktur Data - Pengenalan Bahasa C++
Algoritma dan Struktur Data - Pengenalan Bahasa C++Algoritma dan Struktur Data - Pengenalan Bahasa C++
Algoritma dan Struktur Data - Pengenalan Bahasa C++
 
Use skenario
Use skenarioUse skenario
Use skenario
 
UAS MPPL
UAS MPPLUAS MPPL
UAS MPPL
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data Tree
 
Object oriented programming dengan php
Object oriented programming dengan phpObject oriented programming dengan php
Object oriented programming dengan php
 
Pertemuan 3 Data Multi Dimensi
Pertemuan 3 Data Multi DimensiPertemuan 3 Data Multi Dimensi
Pertemuan 3 Data Multi Dimensi
 
Pertemuan 9 ok
Pertemuan 9 okPertemuan 9 ok
Pertemuan 9 ok
 
Materi 6. perulangan
Materi 6. perulanganMateri 6. perulangan
Materi 6. perulangan
 
Pertemuan 6 Estmasi Usaha Tes
Pertemuan 6 Estmasi Usaha TesPertemuan 6 Estmasi Usaha Tes
Pertemuan 6 Estmasi Usaha Tes
 
Data Base Tiket Pesawat
Data Base Tiket PesawatData Base Tiket Pesawat
Data Base Tiket Pesawat
 
GoLang_1
GoLang_1GoLang_1
GoLang_1
 
Bab x tree (pohon)
Bab x   tree (pohon)Bab x   tree (pohon)
Bab x tree (pohon)
 
Set intruksi ppt
Set intruksi pptSet intruksi ppt
Set intruksi ppt
 
Pemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar FlutterPemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar Flutter
 
Materi dasar-pascal
Materi dasar-pascalMateri dasar-pascal
Materi dasar-pascal
 

Destaque

20 Hal yang Perlu Dipelajari tentang Perambah dan Web
20 Hal yang Perlu Dipelajari tentang Perambah dan Web20 Hal yang Perlu Dipelajari tentang Perambah dan Web
20 Hal yang Perlu Dipelajari tentang Perambah dan WebEko Kurniawan Khannedy
 
Web mvc dengan java jsp seri 1
Web mvc dengan java   jsp seri 1Web mvc dengan java   jsp seri 1
Web mvc dengan java jsp seri 1Zaenal Arifin
 
Tutorial Jsp (Java Server Page) Bagian 1
Tutorial Jsp (Java Server Page) Bagian 1Tutorial Jsp (Java Server Page) Bagian 1
Tutorial Jsp (Java Server Page) Bagian 1yuhana
 
Membuat aplikasi-java-web-enterprise-sederhana
Membuat aplikasi-java-web-enterprise-sederhanaMembuat aplikasi-java-web-enterprise-sederhana
Membuat aplikasi-java-web-enterprise-sederhanaJogal
 
Membuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan javaMembuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan javaEko Kurniawan Khannedy
 
Membuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan javaMembuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan javaEko Kurniawan Khannedy
 
Membangun aplikasi client server dengan java
Membangun aplikasi client server dengan javaMembangun aplikasi client server dengan java
Membangun aplikasi client server dengan javaEko Kurniawan Khannedy
 
Membangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvcMembangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvcEko Kurniawan Khannedy
 
Membangun aplikasi client server dengan java
Membangun aplikasi client server dengan javaMembangun aplikasi client server dengan java
Membangun aplikasi client server dengan javaEko Kurniawan Khannedy
 

Destaque (12)

20 Hal yang Perlu Dipelajari tentang Perambah dan Web
20 Hal yang Perlu Dipelajari tentang Perambah dan Web20 Hal yang Perlu Dipelajari tentang Perambah dan Web
20 Hal yang Perlu Dipelajari tentang Perambah dan Web
 
Belajar Java dasar
Belajar Java dasarBelajar Java dasar
Belajar Java dasar
 
Web mvc dengan java jsp seri 1
Web mvc dengan java   jsp seri 1Web mvc dengan java   jsp seri 1
Web mvc dengan java jsp seri 1
 
Tutorial Jsp (Java Server Page) Bagian 1
Tutorial Jsp (Java Server Page) Bagian 1Tutorial Jsp (Java Server Page) Bagian 1
Tutorial Jsp (Java Server Page) Bagian 1
 
Membuat aplikasi-java-web-enterprise-sederhana
Membuat aplikasi-java-web-enterprise-sederhanaMembuat aplikasi-java-web-enterprise-sederhana
Membuat aplikasi-java-web-enterprise-sederhana
 
Membuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan javaMembuat aplikasi chat menggunakan java
Membuat aplikasi chat menggunakan java
 
Membuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan javaMembuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan java
 
Membangun aplikasi client server dengan java
Membangun aplikasi client server dengan javaMembangun aplikasi client server dengan java
Membangun aplikasi client server dengan java
 
Membangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvcMembangun aplikasi java restful web service menggunakan spring web mvc
Membangun aplikasi java restful web service menggunakan spring web mvc
 
My sql dan java database connectivity
My sql dan java database connectivityMy sql dan java database connectivity
My sql dan java database connectivity
 
Membangun aplikasi client server dengan java
Membangun aplikasi client server dengan javaMembangun aplikasi client server dengan java
Membangun aplikasi client server dengan java
 
Java Swing Make Over
Java Swing Make OverJava Swing Make Over
Java Swing Make Over
 

Semelhante a Java generic dan collection

Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)Debby Ummul
 
Pemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdfPemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdfJeffryAndrian
 
Struktur data
Struktur dataStruktur data
Struktur dataadhhal88
 
Java (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented ProgrammingJava (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented ProgrammingMelina Krisnawati
 
Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekWahyu Widodo
 
Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"Asnita Meydelia C K
 
[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdf[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdfFariz Darari
 

Semelhante a Java generic dan collection (10)

Jeni Intro2 Bab13 Pengenalan Generics
Jeni Intro2 Bab13 Pengenalan GenericsJeni Intro2 Bab13 Pengenalan Generics
Jeni Intro2 Bab13 Pengenalan Generics
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
 
Pemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdfPemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdf
 
13216 3 enkapsulasi
13216 3 enkapsulasi13216 3 enkapsulasi
13216 3 enkapsulasi
 
28431 3 enkapsulasi
28431 3 enkapsulasi28431 3 enkapsulasi
28431 3 enkapsulasi
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Java (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented ProgrammingJava (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented Programming
 
Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi Objek
 
Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"Pemrograman Berorientasi Objek "Pengenalan JAVA"
Pemrograman Berorientasi Objek "Pengenalan JAVA"
 
[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdf[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdf
 

Mais de Eko Kurniawan Khannedy

Mais de Eko Kurniawan Khannedy (6)

Yuk Bikin Aplikasi Android
Yuk Bikin Aplikasi AndroidYuk Bikin Aplikasi Android
Yuk Bikin Aplikasi Android
 
Android Fundamental Concept
Android Fundamental ConceptAndroid Fundamental Concept
Android Fundamental Concept
 
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernateMembangun aplikasi java restful web service [bagian 2] menggunakan hibernate
Membangun aplikasi java restful web service [bagian 2] menggunakan hibernate
 
Pengenalan Java Swing
Pengenalan Java SwingPengenalan Java Swing
Pengenalan Java Swing
 
Interaksi Manusia dan Komputer : Conceptual Model
Interaksi Manusia dan Komputer : Conceptual ModelInteraksi Manusia dan Komputer : Conceptual Model
Interaksi Manusia dan Komputer : Conceptual Model
 
Mobile Nada
Mobile NadaMobile Nada
Mobile Nada
 

Último

442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptx442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptxHendryJulistiyanto
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1udin100
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfbibizaenab
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5KIKI TRISNA MUKTI
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDNurainiNuraini25
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfCandraMegawati
 
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatLatihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatArfiGraphy
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAAndiCoc
 
tugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarantugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarankeicapmaniez
 
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptxGiftaJewela
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfDimanWr1
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfSitiJulaeha820399
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxRezaWahyuni6
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxssuser35630b
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5ssuserd52993
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikaAtiAnggiSupriyati
 

Último (20)

442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptx442539315-ppt-modul-6-pend-seni-pptx.pptx
442539315-ppt-modul-6-pend-seni-pptx.pptx
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
 
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatLatihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
 
tugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarantugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajaran
 
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptx
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
 

Java generic dan collection

  • 1. UNIVERSITAS KOMPUTER INDONESIA Java Generic & Collection Unikom Programming Team Eko Kurniawan Khannedy 5/1/2010
  • 2. Java Generic } } Andai kita membutuhkan banyak data yang Kenapa Pemrograman Generic? akan di tampung dalam kelas Koleksi, maka mau tidak mau kita harus membuat setiap Generic Programming artinya kode yang kelas Koleksi untuk tipe tertentu. Hal ini dapat digunakan oleh beberapa objek yang sangat melelahkan jika dilakukan :( tipenya berlainan. Misal kita memiliki kelas KoleksiString, KoleksiInteger dan Dengan demikian, diperlukan Generic KoleksiDouble, dengan menggunakan Generic Programming untuk mengatasi masalah Programming, kita dapat membuat kelas tersebut. Jika kita menggunakan Generic Koleksi yang dapat menampung data String, Programming, maka kita hanya cukup Integer maupun Double. membuat satu buat kelas Koleksi, dan kelas tersebut dapat menampung seluruh objek Kelas Generic dengan tipe data yang berbeda. Misal sebelum menggunakan Generic package khannedy.unikom.generic.data; Programming, kita akan membuat kelas Koleksi untuk menampung String seperti ini : public class Koleksi<T> { package khannedy.unikom.generic.data; private T data; public class KoleksiString { public T getData() { return data; private String data; } public String getData() { public void setData(T data) { return data; this.data = data; } } } public void setData(String data) { this.data = data; } Dengan menggunakan Generic Programming } diatas, kita dapat membuat Koleksi yang dapat menampung object dengan tipe apapun. Namun perlu diingat, karena Generic Untuk menampung data Integer : Programming hanya dapat menggunakan object, sehingga data primitive harus package khannedy.unikom.generic.data; diimplementasikan dalam objek, misal int public class KoleksiInteger { menjadi Integer, double menjadi Double. private int data; package khannedy.unikom.generic; public int getData() { import return data; khannedy.unikom.generic.data.Koleksi; } public class Main { public void setData(int data) { this.data = data; public static void main(String[] args) {
  • 3. Koleksi<String> a = new Koleksi<String>(); Atau : a.setData("String"); public <T> void kosongkan(T[] data) Koleksi<Integer> b = new Koleksi<Integer>(); b.setData(1); 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 : Pendeklarasian Generic Programming ditandai dengan simbol yang diawali tanda (<) dan package khannedy.unikom.generic.data; diakhiri tanda (>), setelah nama Kelas : public class Utilitas { class Koleksi<T> public <T> T ambilTengah(T[] data) { return data[data.length / 2]; Dari kode diatas, berarti kita membuat simbol } generic dengan simbol T, sehingga T dianggap tipe data dalam lingkup kelas tersebut. Saat // simbol T tidak dikenal pendeklarasian objek Koleksi, maka kita harus public T ambilAwal(T[] data){ menentukan tipe T tersebut : return data[0]; } Koleksi<String> a = new Koleksi<String>(); } Kode diatas berarti kita mengganti simbol T Pewarisan dengan tipe data String. Dalam Generic Programming pun dikenal Metode Generic dengan pewarisan, pewarisan ini digunakan untuk membatasi masukkan data yang dapat Selain dapat diimplementasikan dalam kelas, digunakan dalam kode generic. Secara default Generic Programming juga dapat simbol pada Generic Programming diimplementasikan dalam sebuah metode. merupakan turunan kelas Object, sehingga tipe data apapun dapat masuk ke kode package khannedy.unikom.generic.data; generic tersebut. public class Utilitas { public class Koleksi<T extends Object> public static <T> T ambilTengah(T[] data) { return data[data.length / 2]; Dan jika kita ingin membatasi kode generic } yang kita buat untuk kelas tertentu dan } turunannya, maka kita bisa memanfaatkan fitur pewarisan pada Generic Programming. Untuk membuat generic dalam metode, simbol dideklarasikan sebelum return value, Misal, kita memiliki kelas Musisi, dan kelas misal : MusisiBerbakat, dimana kelas MusisiBerbakat tersebut adalah turunan dari kelas Musisi. public <T> T ambilTengah(T[] data)
  • 4. package khannedy.unikom.generic.data; tentukan. Misal pada kode diatas, kelas Musisi memiliki metode nyanyi(), dengan mewarisi public class Musisi { kelas Musisi dalam kode generic yang kita buat, maka kita dapat memanggil seluruh public void nyanyi() { metode yang ada pada kelas Musisi dalam // nyanyi } kode generic kita : } package khannedy.unikom.generic.data; package khannedy.unikom.generic.data; public class Koleksi <T extends Musisi> { public class MusisiBerbakat extends Musisi{ private T data; public void dansa() { public T getData() { // dansa return data; } } } public void setData(T data) { this.data = data; Jika kita akan membatasi kode generic yang } akan kita buat, hanya dapat digunakan untuk public void nyanyiEuy(){ kelas Musisi dan keturunannya, maka kita if(this.data != null){ dapat membuatnya seperti ini : this.data.nyanyi(); } package khannedy.unikom.generic.data; } } public class Koleksi <T extends Musisi> { Jika kita tidak mewarisi sebuah kelas, maka private T data; metode yang hanya dapat dipanggil public T getData() { hanyalah metode yang ada pada kelas return data; Object. } public void setData(T data) { this.data = 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
  • 5. Java Collection Kode diatas, berarti kita membuat ArrayList yang digunakan untuk menampung data String. Untuk menambah data yang ada dalam Java Collection merupakan kumpulan- ArrayList, kita dapat menggunakan metode kumpulan kelas yang digunakan sebagai kelas add(T data) : struktur data, seperti array, linkedlist, stack, tree dan lain-lain. Seluruh kelas Java list.add("Data Baru"); Collection merupakan turunan kelas java.lang.Iterable. Sehingga dapat digunakan Dan untuk mengubah data yang telah ada dalam perulangan foreach. dalam ArrayList, kita bisa menggunakan package khannedy.unikom.generic; metode set(int index, T dataBaru) : public class Main { list.set(0, "Data Baru"); public static void main(String[] args) { String[] data = new String[10]; Index dalam ArrayList, sama dengan pada for (String a : data) { Array biasa, dimulai dari 0 dan diakhiri dengan // manipulasi a panjangArray-1. } } Untuk mendapatkan data yang ada dalam } ArrayList, kita dapat menggunakan metode get(int index) : Seluruh kelas-kelas Java Collection merupakan String data = list.get(10); kelas generic, sehingga dapat digunakan untuk menampung objek dengan berbadai Artinya kita menggambil data pada ArrayList tipe data. yang ke-11, hal ini dikarenakan index diawali ArrayList dari 0. ArrayList merupakan struktur data Array yang Untuk menghapus data dalam ArrayList, kita dapat berkembang kapasitasnya secara dapat menggunakan metode remove(int otomatis, sehingga berbeda dengan Array index) : biasa yang ukuran Array-nya terbatas saat list.remove(8); dideklarasikan. package khannedy.unikom.generic; Sama seperti metode get() dan set(), index pada metode remove() pun diawali dengan import java.util.ArrayList; index ke-0. public class Main { Untuk mendapatkan total data yang ada public static void main(String[] args) { dalam ArrayList, kita dapat menggunakan ArrayList<String> list = metode size() : new ArrayList<String>(); } int total = list.size(); }
  • 6. 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 Seluruh operasi yang ada pada LinkedList 2. Tempatkan data ke 22 menjadi ke 21 hampir sama dengan yang ada pada ArrayList. 3. Tempatkan data ke 23 menjadi ke 22 Sehingga penggunaanya cukup sama dengan 4. Tempatkan data ke 24 menjadi ke 23 ArrayList. 5. Dan seterusnya hingga data terakhi package khannedy.unikom.generic; Sehinga ArrayList tidak cocok jika digunakan untuk menampung data yang banyak import java.util.LinkedList; menlakukan proses penghapusan data. public class Main { LinkedList public static void main(String[] args) { LinkedList merupakan struktur data yang LinkedList<String> list = setiap data nya memiliki pointer ke data new LinkedList<String>(); berikutnya dan data sebelumnya. Berbeda // tambah data dengan ArrayList, pada LinkedList data tidak list.add("Data Baru"); disimpan pada index. // ubah data list.set(0, "Data Baru Lagi"); // hapus data list.remove(0); // total data int total = list.size(); } } LinkedList merupakan sturktur data yang dapat digunakan sebagai solusi kekurangan pada ArrayList, yaitu pada saat penghapusan Namun yang menjadi permasalahan dalam data. Pada LinkedList, penghapusan data LinkedList yaitu saat proses, pencarian. hanya melakukan 3 langkah, misal kita Dikarenakan pada LinkedList, data tidak menghapus data ke 5 : memiliki index, maka saat terjadi proses pencarian, maka dilakukan secara sequensial, 1. Hapus data ke-5 sehingga dapat memperlambat proses 2. Ubah pointer next data ke-4 menjadi pencarian. mengacu ke data ke-6 3. Ubah pointer prev data ke-6 menjadi mengacu ke data ke-4
  • 7. Set } Set merupakan struktur data yang digunakan @Override untuk menampung data yang datanya tidak public boolean equals(Object obj) { Mahasiswa m = (Mahasiswa) obj; boleh ada yang sama. Jika data yang sama, return m.nim == nim; maka data hanya akan ditampung sekali. } Set merupakan Interface, sehingga @Override dibutuhkan implementasi sebuah kelas untuk public int hashCode() { menggunakan Set. Dalam Java Collection, return nim; implementasi defaultnya adalah HashSet, } dimana HashSet melakukan pengecekan } duplikasi berdasarkan metode equals() dan hashCode(). Dengan demikian, maka kelas Mahasiswa, Secara default hashCode() setiap objek itu hashCode()–nya akan dicek berdasarkan Nim : unik dan defaulnya metode equals() package khannedy.unikom.generic; membandingkan objek pada memori, jika lokasi memorinya sama, maka dianggap sama, import java.util.HashSet; namun kita dapat membuat implementasi import java.util.Set; hashCode() sendiri, misal untuk Mahasiswa, import mahasiswa disebut sama jika memiliki Nim khannedy.unikom.generic.data.Mahasiswa; yang sama, Mahasiswa tidak dianggap sama public class Main { jika Nama nya sana, namun Nim nya berbeda, sehingga kita dapat membuat kelas public static void main(String[] args) { Mahasiswa seperti berikut : Set<Mahasiswa> set = new HashSet<Mahasiswa>(); package khannedy.unikom.generic.data; Mahasiswa a = new Mahasiswa(); public class Mahasiswa { a.setNim(1); a.setNama("Eko Kurniawan Khannedy"); private int nim; set.add(a); private String nama; Mahasiswa b = new Mahasiswa(); b.setNim(1); public String getNama() { b.setNama("Tukul Arwana"); return nama; set.add(b); } for (Mahasiswa m : set) { public void setNama(String nama) { System.out.println("Nim : " this.nama = nama; + m.getNim()); } System.out.println("Nama : " + m.getNama()); } public int getNim() { } return nim; } } public void setNim(int nim) { Maka hasilnya adalah : this.nim = nim;
  • 8. Nim : 1 return 1; Nama : Eko Kurniawan Khannedy } else { return 0; } Artinya hanya mahasiswa dengan nama Eko } Kurniawan Khannedy saja yang masuk, } sedangkan Tukul Arwana tidak masuk, kenapa? Hal ini dikarenakan memiliki nim Dan jika kita implementasikan dalam TreeSet : yang sama yaitu 1. package khannedy.unikom.generic; TreeSet import java.util.TreeSet; TreeSet merupakan struktur data dimana data import yang ditampungnya akan otomatis di urutkan khannedy.unikom.generic.data.Mahasiswa; berdasarkan Comparator. public class Main { Interfaces Comparator<T>() { public int compare(T o1, T o2) { public static void main(String[] args) { } PembandingMahasiswa pembanding = } new PembandingMahasiswa(); TreeSet<Mahasiswa> set = Dalam Comparator, kita diwajibkan new TreeSet<Mahasiswa> membandingkan 2 buat objek dengan tipe (pembanding); data yang sama. Jika o1 lebih besar dari o2 maka return nya harus positif, jika lebih kecil Mahasiswa a = new Mahasiswa(); a.setNim(1); maka return nya harus negatif, jika sama a.setNama("Eko Kurniawan Khannedy"); maka return nya harus 0. set.add(a); Contoh, pada kelas Mahasiswa sebelumnya, Mahasiswa b = new Mahasiswa(); kita akan membandingkan tiap mahasiswa b.setNim(2); berdasarkan nim nya, namun b.setNama("Tukul Arwana"); dibandingkannya secara terbaik, artinya data set.add(b); akan diurutkan secara DESC. for (Mahasiswa m : set) { package khannedy.unikom.generic; System.out.println("Nim : " + m.getNim()); import java.util.Comparator; System.out.println("Nama : " import + m.getNama()); khannedy.unikom.generic.data.Mahasiswa; } } public class PembandingMahasiswa } implements Comparator<Mahasiswa> { public int compare(Mahasiswa o1, Maka hasilny adalah : Mahasiswa o2) { if (o1.getNim() > o2.getNim()) { Nim : 2 return -1; Nama : Tukul Arwana } else if (o1.getNim() < o2.getNim()) { Nim : 1 Nama : Eko Kurniawan Khannedy
  • 9. Collection yang Lain Ada banyak sekali Collection dalam Java, seperti Stack, Vector, Map, Queue dan lain- lain. 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