Какова иерархия наследования интерфейса Set в Java?

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

Ответ

Интерфейс Set в Java наследуется непосредственно от интерфейса Collection.

Иерархия: IterableCollectionSet

Ключевые особенности Set:

  • Запрет дубликатов: Не может содержать двух одинаковых элементов (равенство проверяется через equals()).
  • Отсутствие гарантии порядка (за исключением конкретных реализаций).

Почему Set — это Collection? Он представляет собой коллекцию объектов, но с дополнительным ограничением на уникальность. Все базовые методы Collection (добавление, удаление, обход) применимы и к Set.

Пример и основные реализации:

Set<String> languages = new HashSet<>(); // Не гарантирует порядок
languages.add("Java");
languages.add("Python");
languages.add("Java"); // Дубликат не будет добавлен
System.out.println(languages); // Возможный вывод: [Java, Python] (порядок не определен)

// Другие реализации:
Set<String> linkedSet = new LinkedHashSet<>(); // Сохраняет порядок добавления
Set<String> sortedSet = new TreeSet<>(); // Хранит элементы отсортированными