Comparable vs Comparator
Comparable interface is used to control the natural ordering of objects.
Comparator interface is used to sort objects in an order other than their natural ordering.
+ compareTo(Object) : int
Comparator interface is used to sort objects in an order other than their natural ordering.
+ compare(Object, Object) : int
+ equals(Object) : boolean
+ equals(Object) : boolean
Example
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Collections;
import java.util.Comparator;
class Person implements Comparable
{
String name;
public Person(String name)
{
this.name = name;
}
public int compareTo(Object obj)
{
Person person = (Person) obj;
return this.name.compareTo(person.name);
}
@Override
public String toString()
{
return name;
}
}
{
String name;
public Person(String name)
{
this.name = name;
}
public int compareTo(Object obj)
{
Person person = (Person) obj;
return this.name.compareTo(person.name);
}
@Override
public String toString()
{
return name;
}
}
public class Service
{
public static void main(String[] args)
{
ArrayList<Person> lt = new ArrayList<Person>();
lt.add(new Person("Shyam"));
lt.add(new Person("Mohan"));
lt.add(new Person("Ram"));
System.out.println("Unsorted -> " + lt);
Collections.sort(lt);
System.out.println("Natural ordering using Comparable -> " + lt);
Collections.sort(lt,new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.name.compareTo(p2.name)*-1;
}
});
System.out.println("Ordering using Comparator -> " + lt);
}
}
{
public static void main(String[] args)
{
ArrayList<Person> lt = new ArrayList<Person>();
lt.add(new Person("Shyam"));
lt.add(new Person("Mohan"));
lt.add(new Person("Ram"));
System.out.println("Unsorted -> " + lt);
Collections.sort(lt);
System.out.println("Natural ordering using Comparable -> " + lt);
Collections.sort(lt,new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.name.compareTo(p2.name)*-1;
}
});
System.out.println("Ordering using Comparator -> " + lt);
}
}
Comments
Post a Comment