File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Difference between Comparable and Comparator interfaces Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Difference between Comparable and Comparator interfaces" Watch "Difference between Comparable and Comparator interfaces" New topic
Author

Difference between Comparable and Comparator interfaces

ashni Prakash
Ranch Hand

Joined: Dec 05, 2006
Posts: 50
Can someone tell me the difference between Comparable and Comparator interface and which to use when with examples.

Thanks
Sergey Petunin
Ranch Hand

Joined: Dec 16, 2007
Posts: 44
Comparable interface is defined in the java.lang package and is implemented by a class if the objects of this class can be compared to each other. The comparation can be done using the compareTo() method of this interface. This method should return 0 if the objects are equal, 1 if the argument is smaller and -1 if the argument is bigger than the object on which we're calling this method.

Here's an example of a comparable class. We define the rule for comparation: the RichMan object is bigger if it's int field "money" is greater than one of another RichMan .



Comparator interface is defined in the java.util package and is used for sorting collections, e.g., with Collections.sort method. It defines a method compare(T o1, T o2) which is used for defining a custom sort order. For example, you want to sort a list of RichMan objects not by their money amount, but using their name order. Here's how this can be done:


So to sort a list of RichMan objects by their names, you can say:

[ December 18, 2007: Message edited by: Serge Petunin ]
Vishwanath Krishnamurthi
Ranch Hand

Joined: Jun 04, 2007
Posts: 331
Hi,
And also, the custom sort order can be specified for a sorted collection like TreeMap with a comparator as a constructor argument;

TreeMap()
Constructs a new, empty map, sorted according to the keys' natural order.

TreeMap(Comparator c)
Constructs a new, empty map, sorted according to the given comparator


Blog
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Difference between Comparable and Comparator interfaces