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.
Method | Description |
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; } } |