Ответ
Set — это интерфейс в Java, расширяющий Collection. Он представляет собой коллекцию, не содержащую дубликатов элементов. Более формально, набор не содержит пары элементов e1 и e2, таких что e1.equals(e2).
Основные реализации:
HashSet: Хранит элементы в хэш-таблице. Обеспечивает максимально быстрые операцииadd,remove,contains(в среднем O(1)). Не гарантирует порядок элементов при итерации.LinkedHashSet: НаследуетHashSet, но дополнительно хранит элементы в двусвязном списке. Сохраняет порядок вставки элементов.TreeSet: Хранит элементы в красно-черном дереве. Элементы сортируются либо согласно их естественному порядку (интерфейсComparable), либо с помощью переданногоComparator. Операции выполняются за O(log n).
Пример использования:
Set<String> uniqueNames = new HashSet<>();
uniqueNames.add("Анна");
uniqueNames.add("Борис");
uniqueNames.add("Анна"); // Дубликат не будет добавлен
System.out.println(uniqueNames); // [Анна, Борис] (порядок может быть другим)
System.out.println(uniqueNames.contains("Борис")); // true
// TreeSet для сортировки
Set<Integer> sortedNumbers = new TreeSet<>();
sortedNumbers.add(5);
sortedNumbers.add(1);
sortedNumbers.add(3);
System.out.println(sortedNumbers); // [1, 3, 5]