Java – Comparator Interface

Comparator:

  • Comparator is used to order the objects of a user-defined class.
  • Comparator provides multiple sorting sequences hence we can sort the elements based on different data members, for example, rollno, name, age or anything else.
MethodDescription
public int compare(Object o1, Object o2)Compares first and second object in the list.
public boolean equals(Object obj)Compares this object with specified object.

Compare Student objects based on Age:

Student.java:

class Student

            int rollno; 
            String name; 
            int age; 
            Student(int rollno,String name,int age)
            { 
                        this.rollno=rollno; 
                        this.name=name; 
                        this.age=age; 
            } 
}

AgeComparator.java: We need to implement the Comparator interface and override the compare method to compare 2 objects and then decide to sort.

class AgeComparator implements Comparator

            public int compare(Object o1,Object o2)
            { 
                        Student s1=(Student)o1; 
                        Student s2=(Student)o2; 
                        if(s1.age>s2.age) 
                                    return 1; 
                        else 
                                    return -1; 
            } 
}

Main.java:

import java.util.*; 
import java.io.*; 
class Main

            public static void main(String args[])
            { 
                        ArrayList<Student> list=new ArrayList<Student>(); 
                        list.add(new Student(101,”Vijay”,23)); 
                        list.add(new Student(106,”Ajay”,27)); 
                        list.add(new Student(105,”Jai”,21)); 
                        list.add(new Student(103, “Amar”, 13));
                        System.out.println(“Sort by age”); 
                        Collections.sort(list,new AgeComparator()); 
                        System.out.println(“After Sort : “); 
                        for(Student st : list)
                        {
                                    System.out.println(st.rollno+” , “+st.name+” , “+st.age); 
                        }
            }            
}

Compare Student objects based on Name:

NameComparator.java:

class NameComparator implements Comparator

            public int compare(Object o1,Object o2)
            { 
                        Student s1=(Student)o1; 
                        Student s2=(Student)o2; 
                        return s1.name.compareTo(s2.name); 
            } 
}

Sort based on Employee salary:

MySalaryComp.java:

class MySalaryComp implements Comparator<Empl>
{
            @Override
            public int compare(Empl e1, Empl e2)
            {
                        if(e1.getSalary() < e2.getSalary())
                                    return 1;
                        else
                                    return -1;
            }
}
Scroll to Top