HashSet - это реализация интерфейса Set, которая использует хэш-таблицу для хранения элементов.
Ключевые особенности:
null.Collections.synchronizedSet(new HashSet<E>()) или ConcurrentHashMap.newKeySet().Внутренне HashSet использует экземпляр HashMap, где элементы множества являются ключами, а в качестве значений используется фиктивный объект-заглушка (по сути, любой объект, игнорируемый HashSet).
При добавлении элемента e, вызывается метод hashCode() элемента, чтобы определить корзину в хэш-таблице. Затем в этой корзине сравнивается элемент с уже существующими с помощью метода equals(). Если элемент уже существует (оба хэш-кода равны и equals возвращает true), элемент не добавляется.
Пример использования:
java