Выбор ответа Middle Коллекции изнутри обновлено

TreeSet и компаратор

Вопрос

В TreeSet<String> с компаратором Comparator.comparing(String::length) добавили "cat", "dog", "bird". Сколько элементов в множестве?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 2. TreeSet считает элементы равными, если компаратор вернул 0, equals не используется.

Варианты ответа

  1. 3
  2. 1
  3. 2правильный ответ
  4. Будет исключение: компаратор несовместим с equals

Разбор

TreeSet считает элементы равными, если компаратор вернул 0, equals не используется. "cat" и "dog" одинаковой длины, второй не добавится: останутся cat и bird. Исключения нет, просто поведение отличается от контракта Set по equals. Поэтому компаратор для TreeSet/TreeMap должен быть согласован с equals или учитывать все значимые поля.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме