Collections TreeSet.contains ruft nicht .equals?

thinktank

Mitglied
Hallo in die Runde!

Wenn ich bei meinem Treeset die .contains rufe, läuft er in die compareTo statt in die erwartete .equals Methode rein? Das verstehe ich nicht, da laut Doku mit equals geprüft werden soll...

TreeSet (Java Platform SE 6)

Hat jemand einen Tip, warum das so ist?

Vielen Dank und Grüße
 
Danke für die Antwort. Die habe ich absichtlich nicht gleich, weil da steht:
"It is strongly recommended (though not required) that natural orderings be consistent with equals."

Und es ist für mich im Moment einfacher sie leicht abweichend zu haben.
Aber dann scheint die Doku da falsch zu sein, oder es gibt einen Grund, warum er auf den compareTo statt auf den equals zurück greift.
Ich seh' schon, dass ich das einfach richtig ausprogrammieren muss und die gleich reagierend machen muss.
 
Für Set/TreeSet gilt aber:
Note that the ordering maintained by a set (whether or not an explicit comparator is provided) must be consistent with equals if it is to correctly implement the Set interface.
TreeSet (Java Platform SE 6)

Damit ist das nicht empfohlen, sondern eine Vorraussetzung für (Tree-)Set.
D.h. die Doku ist schon richtig aber deine Interpretation und Implementierung davon ist im Moment falsch 😉
 

Neue Themen


Zurück
Oben