TreeSet и компаратор
Вопрос
В TreeSet<String> с компаратором Comparator.comparing(String::length) добавили "cat", "dog", "bird". Сколько элементов в множестве?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- 3
- 1
- 2правильный ответ
- Будет исключение: компаратор несовместим с equals
Разбор
TreeSet считает элементы равными, если компаратор вернул 0, equals не используется. "cat" и "dog" одинаковой длины, второй не добавится: останутся cat и bird. Исключения нет, просто поведение отличается от контракта Set по equals. Поэтому компаратор для TreeSet/TreeMap должен быть согласован с equals или учитывать все значимые поля.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Деревья в корзинах HashMap
Следующий вопрос
Что выведет: TreeSet с компаратором по длине