Набор - это коллекция, которая не содержит повторяющихся элементов. Set - это интерфейс.
HashSet реализует интерфейс Set
, поддерживаемый хэш-таблицей (фактически, экземпляром HashMap
).
Поскольку HashSet
является одной из конкретных реализаций интерфейса Set
.
A Set
может быть любым из следующих, так как это было реализовано классами ниже
ConcurrentSkipListSet : Масштабируемая параллельная реализация NavigableSet, основанная на ConcurrentSkipListMap
. Элементы набора сортируются в соответствии с их естественным порядком или Comparator
, предоставленным во время создания набора, в зависимости от того, какой конструктор используется.
CopyOnWriteArraySet : Набор, который использует внутренний CopyOnWriteArrayList для всех своих операций.
EnumSet : Специализированная реализация Set для использования с типами enum. Все элементы в наборе перечислений должны происходить из одного типа перечисления, который указывается, явно или неявно, при создании набора.
TreeSet : реализация NavigableSet, основанная на TreeMap. Элементы упорядочиваются с использованием их естественного порядка или с помощью компаратора, предоставляемого во время создания набора, в зависимости от того, какой конструктор используется.
LinkedHashSet : реализация таблицы Ash и связанного списка интерфейса Set с предсказуемым порядком итераций. Эта реализация отличается от HashSet тем, что поддерживает двусвязный список, проходящий через все его записи.
Но HashSet
может быть только LinkedHashSet
, поскольку LinkedHashSet
подклассы HashSet