• Post Reply Bookmark Topic Watch Topic
  • New Topic

Comparable and Comparator  RSS feed

 
Nik Arora
Ranch Hand
Posts: 652
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi All,
Can anybody explain me in detail regarding how to work with the comparable and comparator in collections?



Thanks All
 
Chandra Bhatt
Ranch Hand
Posts: 1710
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Nik,

1- Comparable interface is implemented my classes like String, Integer, Double... Date etc. Comparable enables the objects of the class to be stored in the TreeSet or TreeMap like collection. There should be any way the collection could decide how to place the objects of that class in sorted order that we tell in the compare(...) method of the Comparable interface.

2- Comparator is useful when you need more that one sorting sequence; because you can only create one sorting sequence using Comparable; use can define various classes that implement Comparator interface and define the method compareTo() that takes two arguments.

You can be little specific to your question.

Thank God it is raining here!

Regards,
[ May 01, 2007: Message edited by: Chandra Bhatt ]
 
Nik Arora
Ranch Hand
Posts: 652
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Chandra,
My doubt is how can we create multiple sorting sequence using comparator and only one sorting sequence using comparable. Can you explain me with one example.
 
Louis Moloney
Ranch Hand
Posts: 59
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
when an class implements comparable you give that class a 'natural ordering'. And it wouldn't make sense for a class to have more than one natural ordering.

eg
list.add(new Integer(2));
list.add(new Integer(3));
list.add(new Integer(1));
Collections.sort(list);

the list is now in this order 1,2,3 this is the natural order of Integer.

to get other orderings eg reverse order you can define a comparator and use that.
 
Chandra Bhatt
Ranch Hand
Posts: 1710
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Nik,

See the code below:

 
Nik Arora
Ranch Hand
Posts: 652
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks chandra and louis
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!