Difference Between comparable and comparator
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 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.
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...