Comparator Interface

In Java, Comparator interface is used to order the object in your own way. It gives you ability to decide how element are stored within sorted collection and map.

Comparator Interface defines compare() method. This method compare two object and return 0 if two object are equal. It returns a positive value if object1 is greater than object2. Otherwise a negative value is return. The method can throw a ClassCastException if the type of object are not compatible for comparison.


Student class

class Student
int roll;
  String name;
  Student(int r,String n)
      roll = r;
      name = n;
  public String toString()
      return roll+" "+name;

MyComparator class

This class defines the comparison logic for Student class based on their roll. Student object will be sotred in ascending order of their roll.

class MyComparator implements Comparator
  public int compare(Student s1,Student s2)
        if(s1.roll == s2.roll) return 0;
        else if(s1.roll > s2.roll) return 1;
        else return -1;
public class Test 
   public static void main(String[] args) 
       TreeSet< Student> ts = new TreeSet< Student>(new MyComparator());
       ts.add(new Student(45, "Rahul"));
       ts.add(new Student(11, "Adam"));
       ts.add(new Student(19, "Alex"));

Output :

[ 11 Adam, 19 Alex, 45 Rahul ]

As you can see in the ouput Student object are stored in ascending order of their roll.