In Java, when should I implement Comparable<Something>
versus implementing the equals
method? I understand every time I implement equals
I also have to implement hash code
.
EDIT
Based on answers I am getting below:
Is it safe to say that if I implement Comparable
then I don't need to implement equals
and hashCode
? As in: whatever I can accomplish with equal
is already included in compareTo
? For an example, I want to be able to compare two BSTs for equality. Implementing a hashCode
for that seems daunting; so would comparable
be sufficient?
If you only ever need to compare them for equality (or put them in a HashMap
or HashSet
which is effectively the same) you only need to implement equals
and hashcode
.
If your objects have an implicit order and you indend to sort them (or put them in a TreeMap
or TreeSet
which is effectively sorting) then you must implement Comparable
or provide a Comparator
.