Что произойдет при попытке добавить дубликат в TreeSet в Java?

«Что произойдет при попытке добавить дубликат в TreeSet в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Дубликат не будет добавлен. TreeSet реализует интерфейс Set и не допускает повторяющихся элементов.

Механизм работы:

  1. При добавлении элемента (add()) TreeSet использует метод compareTo() (естественный порядок) или предоставленный Comparator.
  2. Если сравнение возвращает 0, элементы считаются равными, даже если это разные объекты в памяти.
  3. Метод add() возвращает false, и размер коллекции не изменяется.

Пример:

TreeSet<String> fruits = new TreeSet<>();
fruits.add("Apple");  // Возвращает true
fruits.add("Banana"); // Возвращает true
boolean isAdded = fruits.add("Apple"); // Возвращает false
System.out.println(fruits); // Вывод: [Apple, Banana]
System.out.println("Size: " + fruits.size()); // Вывод: Size: 2

Практическое правило: Для определения уникальности в TreeSet используется сравнение, а не метод equals() (хотя контракт требует их согласованности).