Using Collections.sort pada kumpulan Object …

hufft…. akhirnya bisa menulis lagi setelah traffic sibuk jadi agak berkurang … wkwkwk .. sok sibuk ya..
ok langsung saja. Pada tulisan kali ini saya akan membuat contoh untuk menggunakan fungsi sort pada kelas Collections.
Secara default, java menyediakan kelas Comparable yang nantinya digunakan sebagai pembandin dan kelas2 tersebut hanya sebatas wrapper class yang disediakan Java. Contohnya : String,Date,Integer, dll…
Nah, ada kalanya kita mau mengurutkan object yang dibuat dengan cara sendiri, contohnya : Mahasiswa, Buku, Matakuliah, dll …
Untuk keperluan ini harus kita turunkan semua kelas yang kita buat sendiri dari interface Comparable sehingga kita objek yang dibuat sendiri nantinya akan diurutkan oleh method sort berdasarkan kondisi yang kita inginkan.

NB : Teknik yang dipakai dalam sort ini kalo ga salah adalah “Merge Sort”. Kalo salah yah berarti ga benar. hihihihi 🙂

Contoh kelas Buku :

public class Buku implements Comparable<Buku> {

    private String Kode, Judul;

    public String getJudul() {
        return Judul;
    }

    public String getKode() {
        return Kode;
    }

    public Buku(String Kode, String Judul) {
        this.Kode = Kode;
        this.Judul = Judul;
    }

    public int compareTo(Buku o) {
        int lastCmp = Kode.compareTo(o.Kode);
        return (lastCmp != 0 ? lastCmp : Judul.compareTo(o.Judul));

    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Buku other = (Buku) obj;
        if ((this.Kode == null) ? (other.Kode != null) : !this.Kode.equals(other.Kode)) {
            return false;
        }
        if ((this.Judul == null) ? (other.Judul != null) : !this.Judul.equals(other.Judul)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 79 * hash + (this.Kode != null ? this.Kode.hashCode() : 0);
        hash = 79 * hash + (this.Judul != null ? this.Judul.hashCode() : 0);
        return hash;
    }
}

point penting terletak pada fungsi compareTo. fungsi ini kita ovveride sesuai dengan kebutuhan kita atau dengan kata lain isi dari fungsi ini kita buat ketika satu objek di bandingkan berdasarkan property yang mana. Dengan demikian java akan mengurutkan dengan pembanding objek yang ingin kita urutkan.

contoh pemakaian :

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Buku b2 = new Buku("2", "BBB");
        Buku b1 = new Buku("1", "AAA");
        Buku b3 = new Buku("3", "CCC");

        List<Buku> s = new ArrayList<Buku>();
        s.add(b2);
        s.add(b1);
        s.add(b3);

        Collections.sort(s);

        for (Buku b : s) {
            System.out.print(b.getKode() + " " + b.getJudul());
            System.out.println("");
        }
    }
}

Mudah kan ?? Sumber : referensi
Semoga membantu.