SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta Kerja
04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta Kerja04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta Kerja
04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta KerjaMercu Buana University
 
Penelitian Kualitatif Berbasis Grounded theory 9...pptx
Penelitian Kualitatif Berbasis Grounded theory 9...pptxPenelitian Kualitatif Berbasis Grounded theory 9...pptx
Penelitian Kualitatif Berbasis Grounded theory 9...pptxHeliyantiHeliyanti
 
Studi gerakan
Studi gerakanStudi gerakan
Studi gerakanISTA
 
3 Jenis Model (pemodelan dan simulasi)
3 Jenis Model (pemodelan dan simulasi)3 Jenis Model (pemodelan dan simulasi)
3 Jenis Model (pemodelan dan simulasi)Risdawati Hutabarat
 
METODE Parametrik & non parametrik
METODE Parametrik & non parametrikMETODE Parametrik & non parametrik
METODE Parametrik & non parametrikIr Manto
 
Ppt van hiele
Ppt van hielePpt van hiele
Ppt van hieleDiah Dwi
 
Ekonomi teknik diktat
Ekonomi teknik diktatEkonomi teknik diktat
Ekonomi teknik diktattanpaspasi123
 
Kelompok 1 bab 17 pemeliharaan dan keandalan
Kelompok 1 bab 17 pemeliharaan dan keandalanKelompok 1 bab 17 pemeliharaan dan keandalan
Kelompok 1 bab 17 pemeliharaan dan keandalanFinolaTrisnisa1
 
Pengukuran waktu kerja tidak langsung
Pengukuran waktu kerja tidak langsungPengukuran waktu kerja tidak langsung
Pengukuran waktu kerja tidak langsungISTA
 
Pengukuran Waktu Kerja Dengan Metode Pengukuran Langsung
Pengukuran Waktu Kerja Dengan Metode Pengukuran LangsungPengukuran Waktu Kerja Dengan Metode Pengukuran Langsung
Pengukuran Waktu Kerja Dengan Metode Pengukuran LangsungYesica Adicondro
 
7. requirement analyst
7. requirement analyst7. requirement analyst
7. requirement analystmoryku
 
Ppt pembelajaran terpadu model threaded
Ppt pembelajaran terpadu model threadedPpt pembelajaran terpadu model threaded
Ppt pembelajaran terpadu model threadedrizka_pratiwi
 
Information System Security - Prinsip Manajemen Keamanan
Information System Security - Prinsip Manajemen KeamananInformation System Security - Prinsip Manajemen Keamanan
Information System Security - Prinsip Manajemen KeamananDudy Ali
 
Gangguan motorik dan perseptual
Gangguan motorik dan perseptualGangguan motorik dan perseptual
Gangguan motorik dan perseptualAfra Balqis
 
MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)
MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)
MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)afifsalim
 

Was ist angesagt? (20)

04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta Kerja
04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta Kerja04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta Kerja
04. Konsep Perancangan Sistem Produksi, Teknik Tata Cara Kerja, dan Peta Kerja
 
Statistik Industri 1 - PENDAHULUAN
Statistik Industri 1 - PENDAHULUANStatistik Industri 1 - PENDAHULUAN
Statistik Industri 1 - PENDAHULUAN
 
Penelitian Kualitatif Berbasis Grounded theory 9...pptx
Penelitian Kualitatif Berbasis Grounded theory 9...pptxPenelitian Kualitatif Berbasis Grounded theory 9...pptx
Penelitian Kualitatif Berbasis Grounded theory 9...pptx
 
Studi gerakan
Studi gerakanStudi gerakan
Studi gerakan
 
3 Jenis Model (pemodelan dan simulasi)
3 Jenis Model (pemodelan dan simulasi)3 Jenis Model (pemodelan dan simulasi)
3 Jenis Model (pemodelan dan simulasi)
 
METODE Parametrik & non parametrik
METODE Parametrik & non parametrikMETODE Parametrik & non parametrik
METODE Parametrik & non parametrik
 
1 pengertian ai
1 pengertian ai1 pengertian ai
1 pengertian ai
 
Ppt van hiele
Ppt van hielePpt van hiele
Ppt van hiele
 
Ekonomi teknik diktat
Ekonomi teknik diktatEkonomi teknik diktat
Ekonomi teknik diktat
 
Sistem dinamis dengan powersim
Sistem dinamis dengan powersimSistem dinamis dengan powersim
Sistem dinamis dengan powersim
 
Kelompok 1 bab 17 pemeliharaan dan keandalan
Kelompok 1 bab 17 pemeliharaan dan keandalanKelompok 1 bab 17 pemeliharaan dan keandalan
Kelompok 1 bab 17 pemeliharaan dan keandalan
 
Pengukuran waktu kerja tidak langsung
Pengukuran waktu kerja tidak langsungPengukuran waktu kerja tidak langsung
Pengukuran waktu kerja tidak langsung
 
Laboran
LaboranLaboran
Laboran
 
Pengukuran Waktu Kerja Dengan Metode Pengukuran Langsung
Pengukuran Waktu Kerja Dengan Metode Pengukuran LangsungPengukuran Waktu Kerja Dengan Metode Pengukuran Langsung
Pengukuran Waktu Kerja Dengan Metode Pengukuran Langsung
 
7. requirement analyst
7. requirement analyst7. requirement analyst
7. requirement analyst
 
Ppt pembelajaran terpadu model threaded
Ppt pembelajaran terpadu model threadedPpt pembelajaran terpadu model threaded
Ppt pembelajaran terpadu model threaded
 
Information System Security - Prinsip Manajemen Keamanan
Information System Security - Prinsip Manajemen KeamananInformation System Security - Prinsip Manajemen Keamanan
Information System Security - Prinsip Manajemen Keamanan
 
Gangguan motorik dan perseptual
Gangguan motorik dan perseptualGangguan motorik dan perseptual
Gangguan motorik dan perseptual
 
MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)
MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)
MATEMATIKA TERAPAN (MODUS, MEAN, MEDIAN, VARIAN, SIMPANGAN BAKU, REGRESI)
 
Simulasi 2
Simulasi 2Simulasi 2
Simulasi 2
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von Eko Kurniawan Khannedy

Mehr von 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
 

Kürzlich hochgeladen

RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...Kanaidi ken
 
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2noviamaiyanti
 
Kelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfKelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfCloverash1
 
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxSKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxg66527130
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...MarwanAnugrah
 
Materi power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .pptMateri power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .pptAcemediadotkoM1
 
Konflik, Kekerasan, dan Perdamaian Bagian 1.pptx
Konflik, Kekerasan, dan Perdamaian Bagian 1.pptxKonflik, Kekerasan, dan Perdamaian Bagian 1.pptx
Konflik, Kekerasan, dan Perdamaian Bagian 1.pptxintansidauruk2
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxarnisariningsih98
 
rpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdfrpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdfGugunGunawan93
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaSABDA
 
PPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdf
PPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdfPPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdf
PPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdfNatasyaA11
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfWahyudinST
 
TPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikanTPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikanNiKomangRaiVerawati
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdfShintaNovianti1
 
Catatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus PerilakuCatatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus PerilakuHANHAN164733
 
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdfsandi625870
 
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdfAKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdfTaqdirAlfiandi1
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisNazla aulia
 
POWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMP
POWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMPPOWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMP
POWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMPAnaNoorAfdilla
 
Dinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup Bangsa
Dinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup BangsaDinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup Bangsa
Dinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup BangsaEzraCalva
 

Kürzlich hochgeladen (20)

RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
RENCANA + Link2 Materi Pelatihan/BimTek "Teknik Perhitungan & Verifikasi TKDN...
 
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
 
Kelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfKelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdf
 
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptxSKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
SKPM Kualiti @ Sekolah 23 Feb 22222023.pptx
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
 
Materi power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .pptMateri power point Kepemimpinan leadership .ppt
Materi power point Kepemimpinan leadership .ppt
 
Konflik, Kekerasan, dan Perdamaian Bagian 1.pptx
Konflik, Kekerasan, dan Perdamaian Bagian 1.pptxKonflik, Kekerasan, dan Perdamaian Bagian 1.pptx
Konflik, Kekerasan, dan Perdamaian Bagian 1.pptx
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
 
rpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdfrpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdf
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
 
PPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdf
PPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdfPPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdf
PPT IPS Geografi SMA Kelas X_Bab 5_Atmosfer.pptx_20240214_193530_0000.pdf
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdf
 
TPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikanTPPK_panduan pembentukan tim TPPK di satuan pendidikan
TPPK_panduan pembentukan tim TPPK di satuan pendidikan
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
 
Catatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus PerilakuCatatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus Perilaku
 
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
1.2.a.6 Dekon modul 1.2. DINI FITRIANI.pdf
 
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdfAKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
AKSI NYATA Strategi Penerapan Kurikulum Merdeka di Kelas (1).pdf
 
Kelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara InggrisKelompok 4 : Karakteristik Negara Inggris
Kelompok 4 : Karakteristik Negara Inggris
 
POWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMP
POWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMPPOWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMP
POWERPOINT BAHAN AJAR SENYAWA KELAS VIII SMP
 
Dinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup Bangsa
Dinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup BangsaDinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup Bangsa
Dinamika perwujudan Pancasila sebagai Dasar Negara dan Pandangan Hidup Bangsa
 

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