• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Doubt about Comparator interface Implementation

 
Ranch Hand
Posts: 163
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
When u implement a interface u should implement all it's methods.

But when we implement Comparator interface u can leave the equals()

method . where this method is implemented? (A Interface can't

implement it's method ...)

please Help me ............
 
Sheriff
Posts: 3063
12
Mac IntelliJ IDE Python VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The Comparator interface only contains one method: compareTo(Object o). That's all you need to implement for the compiler to be happy. However, you would normally implement equals() so that compareTo() returns 0 if and only if equals() returns true.
 
Ranch Hand
Posts: 1780
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Greg Charles:
The Comparator interface only contains one method: compareTo(Object o). That's all you need to implement for the compiler to be happy. However, you would normally implement equals() so that compareTo() returns 0 if and only if equals() returns true.



I think you're confusing Comparator with Comparable. It's easy to do that!
 
Marshal
Posts: 28177
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
And in answer to the original question: when you write a class that implements Comparator, the equals(Object) method is implemented by that class. If you don't explicitly write the code for it, then you inherit the default equals(Object) implementation from Object. In either case your class implements the method.
 
Jeff Albertson
Ranch Hand
Posts: 1780
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Thennam Pandian:
When you implement an interface you should implement all its methods.
But when we implement Comparator interface you can leave the equals()
method [unimplemented]. where this method is implemented? (A Interface can't
implement it's method ...)



Realize that the interface is repeating the equals method of class Object, but with a refined specification:

Indicates whether some other object is "equal to" this Comparator. This method must obey the general contract of Object.equals(Object). Additionally, this method can return true only if the specified Object is also a comparator and it imposes the same ordering as this comparator. Thus, comp1.equals(comp2) implies that sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2)) for every object reference o1 and o2.

Note that it is always safe not to override Object.equals(Object). However, overriding this method may, in some cases, improve performance by allowing programs to determine that two distinct Comparators impose the same order.


When your Comparator doesn't define it's own equals method, it's inheriting this method from Object.

As another example of an interface repeating an Object method with more to its specification, take a look at equals() and hashCode() in java.util.List.
 
Greg Charles
Sheriff
Posts: 3063
12
Mac IntelliJ IDE Python VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Jeff Albrechtsen:


I think you're confusing Comparator with Comparable. It's easy to do that!





Note to self: stay out of the forums until this head cold clears.

I'm off to recheck every line of code I wrote today.
 
Thennam Pandian
Ranch Hand
Posts: 163
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Paul Clapham:
And in answer to the original question: when you write a class that implements Comparator, the equals(Object) method is implemented by that class. If you don't explicitly write the code for it, then you inherit the default equals(Object) implementation from Object. In either case your class implements the method.




now i understand it ..........thankz for ur idea......
 
reply
    Bookmark Topic Watch Topic
  • New Topic