Guys, malam ini sepi banget .. gak ada kerjaan (skripsi bukan termasuk kerjaan yah .. heheh) .. oke deh iseng – iseng pada malam hari ini saya mau nulis sedikit contoh tentang bagaimana mengurutkan (sorting) pada Java Collection. Ga sulit sih .. saya nulis ini buat dokumentasi aja .. siapa tau nanti di kantor anak – anak developer ada yang perlu tinggal baca tulisan ini .. heheheh …
Diceritakan bahwasanya kita mempunyai sebuah list sederhana yang berisikan String (dengan kata lain list ini adalah List of String), kemudian kita akan melakukan shorting secara alfabet pada List tersebut. untuk lebih jelasnya silahkan perhatikan contoh kode program dibawah ini :
package scjplesson.comparator; import java.util.LinkedList; import java.util.List; public class ListOfString { public static void main(String[]args){ List<String> list = new LinkedList<String>(); list.add("Muhammad"); list.add("Ghufron"); list.add("Keren"); list.add("Banget"); list.add("Rosfarahin"); list.add("Cantik"); list.add("Saja"); System.out.println("--> without sorting"); for(String s : list){ System.out.println("---> "+s); } } }
Dan hasil output program nya adalah seperti ini :
--> without sorting ---> Muhammad ---> Ghufron ---> Keren ---> Banget ---> Rosfarahin ---> Cantik ---> Saja
Kemudian kita akan melakukan sorting pada list ini, simple saja cukup tambahkan code seperti ini :
Collections.sort(list);
Sehingga kode program nya akan menjadi seperti ini :
package scjplesson.comparator; import java.util.Collections; import java.util.LinkedList; import java.util.List; public class ListOfString { public static void main(String[]args){ List<String> list = new LinkedList<String>(); list.add("Muhammad"); list.add("Ghufron"); list.add("Keren"); list.add("Banget"); list.add("Rosfarahin"); list.add("Cantik"); list.add("Saja"); Collections.sort(list); System.out.println("--> with sorting"); for(String s : list){ System.out.println("---> "+s); } } }
Maka output program akan menjadi seperti di bawah ini :
--> with sorting ---> Banget ---> Cantik ---> Ghufron ---> Keren ---> Muhammad ---> Rosfarahin ---> Saja
Oke .. ga susah lah ya kayak gini doang, next pada tahap selanjutnya bagaimana jika List tersebut diisi oleh Objek lain semisal POJO, di dalam POJO tersebut terdapat variabel bertipe String, yang perlu kita lakukan adalah dengan membuat class comparator khusus untuk objek POJO tersebut. Don’t think hard, it’s so simple .. simak kode dibawah ini :
package scjplesson.comparator; public class ExampleObject { private String name; public ExampleObject(){} public ExampleObject(String name){ this.name = name; } public String getName(){ return name; } public void setName(String name){ this.name = name; } }
Dan berikut ini adalah class comparator yang saya maksudkan diatas tadi :
package scjplesson.comparator; import java.util.Comparator; public class StringComparator implements Comparator<ExampleObject>{ @Override public int compare(ExampleObject o1, ExampleObject o2) { String s1 = o1.getName(); String s2 = o2.getName(); return s1.compareTo(s2); } }
Dan untuk memanggilnya adalah dengan cara seperti ini :
Collections.sort(list, new StringComparator()); //StringComparator() adalah nama class comparator yang kita buat
untuk lebih lengkapnya seperti kode program di bawah ini :
package scjplesson.comparator; import java.util.Collections; import java.util.LinkedList; import java.util.List; public class RunningExample { public static void main(String[]args){ List<ExampleObject> list = new LinkedList<ExampleObject>(); list.add(new ExampleObject("Muhammad")); list.add(new ExampleObject("Ghufron")); list.add(new ExampleObject("Keren")); list.add(new ExampleObject("Banget")); list.add(new ExampleObject("Rosfarahin")); list.add(new ExampleObject("Cantik")); list.add(new ExampleObject("Saja")); System.out.println("---- before ascending "); for(ExampleObject eo : list){ System.out.println("-> "+eo.getName()); } Collections.sort(list, new StringComparator()); System.out.println("--- after ascending "); for(ExampleObject eo : list){ System.out.println("-> "+eo.getName()); } } }
Dan hasil output program nya akan menjadi seperti di bawah ini :
---- before ascending -> Muhammad -> Ghufron -> Keren -> Banget -> Rosfarahin -> Cantik -> Saja --- after ascending -> Banget -> Cantik -> Ghufron -> Keren -> Muhammad -> Rosfarahin -> Saja
Tidak selalu String, Integer pun juga bisa kita sorting, yang membedakan adalah type data yang kita bandingkan di dalam class comparator nya, coba simak class comparator di bawah ini untuk mensorting type data Integer
package scjplesson.comparator; import java.util.Comparator; public class IntegerComparator implements Comparator<ExampleObject>{ @Override public int compare(ExampleObject o1, ExampleObject o2) { // TODO Auto-generated method stub Integer i1 = o1.getAge(); Integer i2 = o2.getAge(); return i1.compareTo(i2); } }
Mudah kan … gak perlu di buat sulit lah .. teruslah belajar Java dan rasakan manfaatnya