Penggunaan Comparable dan Comparator Pada Java

Penggunaan Comparable dan Comparator Pada Java

Kali ini saya akan membahas comparable dan comparator pada Java.

  1. Penggunan Class Comparable

Dengan mengimplementasikan interface Comparable pada sebuah class, menyebabkan object-object tersebut bisa dibandingkan (comparable).

  • Interface ini mempunyai sebuah method, compareTo() yang menentukan bagaimana cara membandingkan antara dua object dari class tersebut.
  • Bentuk methodnya: public int compareTo(Object o)
  • Mehod compareTo() menerima Object, sehingga kita bisa memasukkan sembarang object, tapi harus mempunyai tipe yang sama. Kalau object yang kita masukkan adalah object yang berbeda maka melempar java.lang.ClassCastException
  • Return value dari method compareTo() – 0 jika dua object yang dibandingkan sama. – Bilangan positif, jika object 1 lebih besar dibandingkan dengan object 2 – Bilangan negatif, jika object 1 lebih kecil dibandingkan dengan object 2.

Contoh penggunaan Comparable berdasarkan nama :

Class Student

public class Student implements Comparable<Student> {

    private String nama;
    private int umur;

    public Student(String nama, int umur) {
        this.nama = nama;
        this.umur = umur;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public int getUmur() {
        return umur;
    }

    public void setUmur(int umur) {
        this.umur = umur;
    }

    @Override
    public int compareTo(Student student) {
   
        return  nama.compareTo(student.getNama());
    }

    @Override
    public String toString() {
        return "Student{" +
                "nama='" + nama + '\'' +
                ", umur=" + umur +
                '}';
    }
}

Class MainComparable

public class MainComparable{
    public static void main(String[] args) {
        List<Student> student = new ArrayList<>();
        student.add(new Student("Alvin",24));
        student.add(new Student("Ibnu",23));
        student.add(new Student("ghafirin",16));
        student.add(new Student("fakhri",15));

        Collections.sort(student);

        for (Student murid : student) {
            System.out.println(murid.toString());
        }
    }

}
  1. Penggunaan Class Comparator

Dengan mengimplementasikan interface Comparable kita hanya bisa menentukan satu cara saja untuk membandingkan objectobject dari class Person, untuk contoh sebelumnya, yang kita bandingkan berdasarkan umur.

  • Bagaimana jika object-object dari class Person diurutkan berdasarkan umur, nama awal dan nama akhir? Berarti objectobject tersebut dibandingkan berdasarkan umur, nama awal dan nama akhir.
  • Kita masih memerlukan dua cara lagi untuk membandingkan objectobject dari class Person. Kita perlu dua comparator.
  • Untuk membuat comparator, buat class yang mengimplementasikan interface java.util.Comparator, dan method compare(). public int compare(Object o1, Object o2) Return value dari method compare() – 0 jika dua object yang dibandingkan sama. – Bilangan positif, jika object 1 lebih besar dibandingkan dengan object 2 – Bilangan negatif, jika object 1 lebih kecil dibandingkan dengan object 2

contoh penggunaan comparator dengan class Student di atas:

class MainComparator

public class MainComparator{
    public static void main(String[] args) {


        List<Student> student = new ArrayList<>();
        student.add(new Student("Alvin",24));
        student.add(new Student("Ibnu",23));
        student.add(new Student("ghafirin",16));
        student.add(new Student("fakhri",15));

        System.out.println("nama");
        Collections.sort(student);
        for (Student murid : student) {
            System.out.println(murid.toString());
        }
        System.out.println("umur");
        Collections.sort(student, new Student1());
        for (Student murid : student) {
            System.out.println(murid.toString());
        }
    }

}

Demikian sekilas tentang penggunaan Comparable dan Comparator pada Java, semoga bermanfaat. terimakasih.

Related posts:

Loading Facebook Comments ...