Компаратор деревьев

Я использовал TreeSet с самописным Comparator. Теперь, когда я добавляю элементы в TreeSet, а методы сравнения компаратора возвращают 0, кажется, что TreeSet содержит только один объект с одинаковым рейтингом.

Я не видел, чтобы это поведение было задокументировано в javadocs. Может я что-то упускаю. Вы можете подтвердить это поведение?

Я редактировал Comparator. Теперь он никогда не возвращает 0, а TreeSet содержит все объекты с одинаковым рейтингом.

Так и должно быть, если я хочу иметь несколько объектов с одинаковым рейтингом?


person Community    schedule 04.09.2009    source источник
comment
Пожалуйста, добавьте свое исследование, логику, текущий результат и ожидаемый результат, чтобы сообщество знало точную проблему и попыталось решить вашу проблему.   -  person Rais Alam    schedule 28.12.2012


Ответы (3)


Так и должно быть, поскольку множество определяется как включающее одинаковые объекты только один раз.

Когда ваш компаратор возвращает 0, два объекта считаются равными, поэтому в набор включается только один (вероятно, первый) из всех равных объектов.

person mrueg    schedule 04.09.2009


Если вам нужна отсортированная коллекция, которая может содержать несколько объектов, равных друг другу, то TreeMultiset из Коллекции Google, вероятно, поможет.

person gustafc    schedule 04.09.2009