• Post Reply Bookmark Topic Watch Topic
  • New Topic

Doubt about Comparator interface Implementation  RSS feed

 
Thennam Pandian
Ranch Hand
Posts: 163
  • Mark post as helpful
  • send pies
  • 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 ............
 
Greg Charles
Sheriff
Posts: 3015
12
Firefox Browser IntelliJ IDE Java Mac Ruby
  • Mark post as helpful
  • send pies
  • 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.
 
Jeff Albertson
Ranch Hand
Posts: 1780
  • Mark post as helpful
  • send pies
  • 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!
 
Paul Clapham
Sheriff
Posts: 22823
43
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • 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
  • 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: 3015
12
Firefox Browser IntelliJ IDE Java Mac Ruby
  • Mark post as helpful
  • send pies
  • 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
  • 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......
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!