barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

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

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

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

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

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