It's not a secret anymore!*
The moose likes Beginning Java and the fly likes Difference between comparable and comparator Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCA/OCP Java SE 7 Programmer I & II Study Guide this week in the OCPJP forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Difference between comparable and comparator" Watch "Difference between comparable and comparator" New topic
Author

Difference between comparable and comparator

jose chiramal
Ranch Hand

Joined: Feb 12, 2010
Posts: 266
Hi, Can someone please suggest me any good site explaining difference between comparator and comparable interface. Thanks
Suhas Bilaye
Ranch Hand

Joined: Sep 10, 2009
Posts: 80
You may refer here
Difference Between comparable and comparator


Thanks and Regards,
Suhas
http://www.xplore-java.blogspot.com/
Pushkar Choudhary
Rancher

Joined: May 21, 2006
Posts: 425

One more link here.
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 39478
    
  28
Two nice links, but I prefer Pushkar Choudhary's link.
jose chiramal
Ranch Hand

Joined: Feb 12, 2010
Posts: 266
I too liked Pushkar Choudhary's link
I would like to know when the compare() and toCompare( , ) methods actually get called ? Also would like to know the object values that those methods take. For this program i could due a SOP and find out the object values, but would like to what objects are passed to these methods.
jose chiramal
Ranch Hand

Joined: Feb 12, 2010
Posts: 266
Looks like i would have to look into the "sort" method code under collections class to figure out the logic that is being used here, am I correct ?
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18914
    
  40

jose chiramal wrote:Looks like i would have to look into the "sort" method code under collections class to figure out the logic that is being used here, am I correct ?


You could. Or you could just pick up a book on algorithms, and just skim the code. To answer your question....

Yes, you are correct. How compare() or compareTo() methods are called totally depends on the sorting algorithm being used. For example, a bubble sort will call neighboring elments to determine if they should be swapped. Whereas a quick sort algorithm will do a "divide and conquer" approach. Etc. Etc. Etc.

And instead of looking into source to just see how it is done in java, it may be better to understand the algorithm first (I believe the collections sort uses a combination of quick sort and heap sort as the algorithm). Sorting algorithms are generally covered in an university algorithms course, so there are tons of text books for it.

Henry


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 39478
    
  28
I thought Collections#sort(java.util.List) uses a kind of recursive merge sort.
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18914
    
  40

Campbell Ritchie wrote:I thought Collections#sort(java.util.List) uses a kind of recursive merge sort.



Oops... I meant to say a combination of quick and merge sort -- which I read somewhere years ago, but hasn't confirmed, and don't recall where. So, I guess, never mind me...

Henry
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 39478
    
  28
As far as I can remember, it's merge sort without sorting if the top value of the "left" subarray is "less than" the bottom value of the "right" subarray. That way you get a "stable" sort; quick sort is not "stable".
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Difference between comparable and comparator