Tuesday, May 21, 2013

Select Distinct dari ArrayList Java

Suatu hari nan indah saya memiliki data yang saya simpan dalam Arraylist. Saya hobi sekali pake' Arraylist ketimbang pake' array biasa (array statis). Karena di Arraylist saya bisa menambah data sesuka hati tanpa peduli dengan length.
Tanpa disengaja data tersebut seperti berikut:
  • Malang
  • Surabaya
  • Malang
  • Singosari
  • Surabaya
  • Jakarta
Kemudian tanpa disengaja saya ingin mendapatkan daftar kota berbeda dari data di atas (kalau di database dikenal Select distinct(nama kolom)), sehingga hasilnya seperti:
  • Singosari
  • Jakarta
  • Malang
  • Surabaya
Alhasil saya gunakan HashSet. Karena Hashset tidak menerima data yang sama (duplikasi data). Sehingga tanpa disengaja source code pun seperti ini:

         // DEKLARASI & INISIALISASI DATA AWAL  
           ArrayList<String> data = new ArrayList<>();  
           data.add("Malang");  
           data.add("Surabaya");  
           data.add("Malang");  
           data.add("Singosari");  
           data.add("Surabaya");  
           data.add("Jakarta");  
           // CETAK SEMUA DATA  
           System.out.println("DATA KESELURUHAN");  
           System.out.println("---------------------------------------");  
           for (int i = 0; i < data.size(); i++) {  
                System.out.println(data.get(i));  
           }  
           System.out.println();  
           // DAPATKAN NILAI DISTINCT (BERBEDA) DARI DATA ARRAYLIST  
           HashSet<String> distinct = new HashSet<>();  
           for (int i = 0; i < data.size(); i++) {  
                distinct.add(data.get(i));  
           }  
           // CETAK HASIL DISTINCT (BERBEDA)  
           Iterator iterasi = distinct.iterator();  
           System.out.println("HASIL DISTINCT");  
           System.out.println("---------------------------------------");  
           while (iterasi.hasNext()) {  
                String unik = (String) iterasi.next();  
                System.out.println(unik);  
           }  
           System.out.println();  
           // DAPATKAN NILAI DISTINCT DARI DATA ARRAYLIST & URUT  
           TreeSet<String> distinctUrut = new TreeSet<>();  
           for (int i = 0; i < data.size(); i++) {  
                distinctUrut.add(data.get(i));  
           }  
           // CETAK HASIL DISTINCT (BERBEDA)  
           iterasi = distinctUrut.iterator();  
           System.out.println("HASIL DISTINCT & URUT");  
           System.out.println("---------------------------------------");  
           while (iterasi.hasNext()) {  
                String unikDanUrut = (String) iterasi.next();  
                System.out.println(unikDanUrut);  
           }  

#Tambahan:
Jika ingin distinct tersebut langsung diurutkan, maka gunakan Treeset seperti source code di atas. Karena TreeSet tidak menerima duplikasi data serta akan mengurutkan data di dalamnya secara otomatis.

Sekian Basa-Basi dari saya. Semoga Ilmu yang terlanjur sederhana ini bermanfaat.
Kritik dan Saran saya harapkan.

Happy Coding.....^_^

No comments:

Post a Comment