This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
these lines are from k&s book... i could not understand the difference between using comparator and comparable interface....what is there use and how they are used....
The other handy thing about
the Comparator interface is that you can use it to sort instances of any class—even
classes you can't modify—
unlike the Comparable interface, which forces you to
change the class whose instances you want to sort.
you need to understand this line in broader way.. let me explain some..
above code will help you to understand your question..
See in Client code i have did sorting 3 time..
one natural using comparable
2nd using comparator
3rd using comparator - reverse order
but if you consider way one.. and i want to change my sorting criteria i must have to change the test class
but if i do same thing using comparator - then i just need to introduce new comparator.. but it`s client side code no need to change original class...
vijay umar wrote:So any oone can please explain in brief how the above wil be manipulated if given as an input...
The comparable interfaces does *not* manipulate. It doesn't do any searching. It doesn't do any sorting. etc. The purpose of the comparable interface is to compare two objects (or to compare one object to another). Period.
If you look at all sorting algorithms -- bubble sort, quick sort, heap sort, etc. etc. -- you'll notice that at a very basic level, it depends on the capability to compare two items. So... The compare() method doesn't do any sorting. The sorting is done by the collections.sort() method that you are using. However, when the algorithm (implemented by the method) needs to compare and decide whether it should move an element in the list, it uses the compare method.