over 9 years ago
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 :
The main advantage of Comparator is that it facilitates multiple sorting sequence.
Syntax:
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
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;
- }
- }
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);
- }
- }
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);
- }
}
- }
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
0 Comment(s)