Interface Comparable Java

Interface Comparable Java

Interface Comparable

Comparable adalah sebuah generic interface yang dapat membandingkan suatu object dengan object lain dari class yang sama. Misalnya membandingkan angka, membandingkan string dll.. Jika sebuah class mengimplementasikan interface comparable maka instance object dari class tersebut dapat dibandingkan. Ketika sebuah object dapat dibandingkan maka object tersebut dapat diurutkan dengan menggunakan bawaan method pengurutan dijava. Method tersebuat dapat mengurutkan sekumpulan object.

package java.lang; public interface Comparable<T> { public int compareTo(T o) { } }

Didalam interface comparable terdapat satu method compareTo(T o). Method ini digunakan untuk membandingkan object saat ini dengan object parameter, hasil dari perbandingan mengembalikan bilangan bulat int

  • bilangan positif 1: Artinya object yang dibandingkan lebih besar dari object parameter
  • bilangan negatif -1: Artinya object yang dibandingkan lebih kecil dari object parameter
  • bilangan nol 0: Artinya object yang dibandingkan sama

Implements Interface Comparable

Contoh sederhana membandingkan object dengan object lain dari kelas yang sama.

public class Student implements Comparable<Student> { private String name; private int gradeFinal; public Student(String name, int gradeFinal) { this.name = name; this.gradeFinal = gradeFinal; } public String getName() { return name; } public int getGradeFinal() { return gradeFinal; } @Override public int compareTo(Student o) { if(getGradeFinal() > o.getGradeFinal()) { return 1; } else if(getGradeFinal() < o.getGradeFinal()) { return -1; } else return 0; } } public class Main { public static void main(String[] args) { Student student1 = new Student("Student1", 90); Student student2 = new Student("Student2", 100); System.out.println("RESULT COMPARE TO:: "+student1.compareTo(student2)); } }

Output:

RESULT COMPARE TO:: -1 public class Main { public static void main(String[] args) { Student[] students = { new Student("student1", 90), new Student("student2", 100), new Student("student3", 80), new Student("student4", 70), }; for(var student : students) { System.out.print(student.getGradeFinal()+" "); } System.out.println("Setelah diurutkan"); Arrays.sort(students); for(var student : students) { System.out.print(student.getGradeFinal()+" "); } } }

Output:

90 100 80 70 Setelah diurutkan 70 80 90 100

Jadi jika kita ingin membandingkan satu object dengan object lain gunakan method compareTo(T)