вторник, 10 июля 2012 г.

java.util.TreeSet и использование объектов с не согласующимися реализациями compareTo() и equals()

Если объект имеет не согласующиеся реализации compareTo() и equals(), т.е. если первая может вернуть 0 для объектов, для которых equals вернет false, использовать такие объекты в TreeSet нельзя (т.е. вобщем-то можно, но чревато неожиданным поведением). Дело в том, что TreeSet, на что обращено внимание в документации, для определения эквивалентности объектов при добавлении использует не equals(), а compareTo(), поэтому в набор нельзя будет добавить 2 объекта, которые неидентичны с точки зрения equals(), но возвращают 0 при сравнении с помощью compareTo().

Комментариев нет:

Отправить комментарий