Hi,
Here I am writing a simple way to use Comparator interface.
We use Comparator interface to order the objects.
First of all we need to import java.util package.
It have two methods :
- Compare(Object o1, Object o2)
- equals(Object o).
The main advantage of Comparator is that it facilitates multiple sorting sequence.
Syntax:
public int compare(Object o1,Object o2);
It will compare o1 to o2.
We have Collections class that provides sorting methods.
We can use Comparator object with this method for sorting like this
public void sort(List myList,Comparator com)
Example of sorting the elements of List on the basis of age and
name
Employee.java
class Employee{
int empId;
String name;
int age;
Employee (int empId,String name,int age){
this. empId = empId;
this.name=name;
this.age=age;
}
}
CompareByAge.java
import java.util.*;
class CompareByAge implements Comparator{
public int Compare(Object obj1,Object obj2){
Employee emp1=( Employee)o1;
Employee emp2=( Employee)o2;
if(emp1.age== emp2.age)
return 0;
else if(emp1.age> emp2.age)
return 1;
else
return -1;
}
}
CompareByName.java.
import java.util.*;
class CompareByName implements Comparator{
public int Compare(Object o1,Object o2){
Employee emp1=( Employee)o1;
Employee emp2=( Employee)o2;
return emp1.name.compareTo(emp2.name);
}
}
Main.java
class Main{
public static void main(String args[]){
ArrayList empList=new ArrayList();
empList.add(new Employee(3,"BBB",25));
empList.add(new Employee (1,"DDD",24));
empList.add(new Employee (7,"AAA",28));
System.out.println("Sorting + + By + + Name");
Collections.sort(empList,new CompareByName ());
Iterator itr=al.iterator();
while(itr.hasNext()){
Employee emp=( Employee)itr.next();
System.out.println(emp.empId+" "+ emp.name+" "+ emp.age);
}
System.out.println("Sorting + + By + + Age");
Collections.sort(empList,new CompareByAge());
Iterator itr2= empList.iterator();
while(itr2.hasNext()){
Employee emp=(Employee)itr2.next();
System.out.println(emp.empId+" "+ emp.name+" "+ emp.age);
}
}
}
Output
Sorting + + By + + Name
7 AAA 28
3 BBB 25
1 DDD 24
Sorting + + By + + Age
1 DDD 24
3 BBB 25
7 AAA 28
0 Comment(s)