Home Java SCJP SCWCD Servlet Submit News Contact Us Site Map


Over 500 magazines for free (including Oracle Magazine)!

Yes all of them are FREE. You can subscribe to ALL of them.
Click here to apply today!

JavaDeveloper.co.in network has launched a dedicated site just for Java Examples. You can now learn java language by examples.

Please visit Java Examples to get started !

/*

Java Comparator example.

This Java Comparator example describes how java.util.Comparator interface is implemented to compare Java user defined classe's objects.

These Java Comparator is passed to Collection's sorting method ( for example Collections.sort method)to perform sorting of Java user defined classe's objects.

*/

import java.util.*;

/*

java.util.Comparator interface declares two methods,

1) public int compare(Object object1, Object object2) and

2) boolean equals(Object object)

*/

/*

We will compare objects of the Employee class using custom comparators

on the basis of employee age and name.

*/

class Employee{

private int age;

private String name;

public void setAge(int age){       

this.age=age;

}

public int getAge(){         

return this.age;

}

public void setName(String name){        

this.name=name;

}

public String getName(){

return this.name;

}    

}

/*

User defined java comaprator.

To create custom java comparator Implement Comparator interface and

define compare method.

The below given comparator compares employees on the basis of their age.

*/

class AgeComparator implements Comparator{

public int compare(Object emp1, Object emp2){

//parameter are of type Object, so we have to downcast it to Employee objects

int emp1Age = ( (Employee) emp1).getAge();

int emp2Age = ( (Employee) emp2).getAge();

if( emp1Age > emp2Age )

return 1;

else if( emp1Age < emp2Age )

return -1;

else

return 0;

}

}

/*

The below given comparator compares employees on the basis of their name.

*/

class NameComparator implements Comparator{

public int compare(Object emp1, Object emp2){

//parameter are of type Object, so we have to downcast it to Employee objects

String emp1Name = ( (Employee) emp1 ).getName();

String emp2Name = ( (Employee) emp2 ).getName();

//uses compareTo method of String class to compare names of the employee

return emp1Name.compareTo(emp2Name);

}

}

/*

This Java comparator example compares employees on the basis of

their age and name and sort it in that order.

*/

public class JavaComparatorExample{

public static void main(String args[]){

/*

Employee array which will hold employees

*/

Employee employee[] = new Employee[2];

//set different attributes of the individual employee.

employee[0] = new Employee();

employee[0].setAge(40);

employee[0].setName("Joe");

employee[1] = new Employee();

employee[1].setAge(20);

employee[1].setName("Mark");

System.out.println("Order of employee before sorting is");

//print array as is.

for(int i=0; i < employee.length; i++){

System.out.println( "Employee " + (i+1) + " name :: " + employee[i].getName() + ", Age :: " + employee[i].getAge());

}

/*

Sort method of the Arrays class sorts the given array.

Signature of the sort method is,

static void sort(Object[] object, Comparator comparator)

IMPORTANT: All methods defined by Arrays class are static. Arrays class

serve as a utility class.

*/

/*

Sorting array on the basis of employee age by passing AgeComparator

*/

Arrays.sort(employee, new AgeComparator());

System.out.println("\n\nOrder of employee after sorting by employee age is");

for(int i=0; i < employee.length; i++){

System.out.println( "Employee " + (i+1) + " name :: " + employee[i].getName() + ", Age :: " + employee[i].getAge());

}

/*

Sorting array on the basis of employee Name by passing NameComparator

*/

Arrays.sort(employee, new NameComparator());

System.out.println("\n\nOrder of employee after sorting by employee name is");     

for(int i=0; i < employee.length; i++){

                  System.out.println( "Employee " + (i+1) + " name :: " + employee[i].getName() + ", Age :: " + employee[i].getAge());

}

}

}

/*

OUTPUT of the above given Java Comparable Example would be :

Order of employee before sorting is

Employee 1 name :: Joe, Age :: 40

Employee 2 name :: Mark, Age :: 20

Order of employee after sorting by employee age is

Employee 1 name :: Mark, Age :: 20

Employee 2 name :: Joe, Age :: 40

Order of employee after sorting by employee name is

Employee 1 name :: Joe, Age :: 40

Employee 2 name :: Mark, Age :: 20

*/

For more examples please visit Java Examples

Home Java SCJP SCWCD Servlet Site map