Ответ
В Java Set — это интерфейс коллекции, предназначенный для хранения только уникальных элементов. Он не допускает дубликатов, что делает его незаменимым для задач, где требуется гарантировать уникальность данных.
Основные реализации и их применение:
HashSet: Наиболее часто используемая реализация. Хранит элементы в хэш-таблице, обеспечивая константное время выполнения для основных операций (add,remove,contains— в среднем O(1)). Не гарантирует порядок элементов.LinkedHashSet: НаследуетHashSet, но дополнительно сохраняет порядок вставки элементов, используя связный список. Производительность чуть ниже, чем уHashSet.TreeSet: Реализует интерфейсSortedSet. Хранит элементы в отсортированном порядке (по естественному порядку или с помощью переданногоComparator). Операции выполняются за O(log n).
Пример использования для удаления дубликатов:
List<String> namesWithDuplicates = Arrays.asList("Alice", "Bob", "Alice", "Charlie");
Set<String> uniqueNames = new HashSet<>(namesWithDuplicates);
System.out.println(uniqueNames); // Вывод: [Alice, Bob, Charlie] (порядок может быть любым)
Типичные сценарии использования Set:
- Удаление дубликатов из коллекции.
- Быстрая проверка принадлежности элемента к множеству (например, кэш обработанных ID).
- Математические операции над множествами (объединение, пересечение, разность) с помощью методов
addAll,retainAll,removeAll.