Реализация HashSet в Java основана на хэш-таблице. 13 Элементы в HashSet не упорядочены, нет гарантий, что они будут в том же порядке спустя какое-то время. 1
Некоторые особенности работы HashSet:
- Хранение уникальных элементов. 5 Если попытаться добавить дубликат, то старый элемент будет заменён. 5
- Возможность хранения NULL-значений. 1 При попытке добавить более одного NULL-значения, вернётся только одно. 5
- Быстрота выполнения операций. 25 Благодаря использованию техники хэширования, операции добавления, извлечения, удаления и другие в среднем выполняются за константное время (О(1)). 15
- Начальная ёмкость и коэффициент загрузки. 1 Начальная ёмкость — изначальное количество ячеек («корзин») в хэш-таблице. 1 Если все ячейки будут заполнены, их количество увеличится автоматически. 1 Коэффициент загрузки — показатель того, насколько заполненным может быть HashSet до того момента, когда его ёмкость автоматически увеличится. 1
При добавлении объекта в HashSet сначала находится хэш-код объекта. 4 Если корзина, связанная с этим хэш-кодом, уже заполнена, объекты сравниваются с помощью equals. 4 Если они совпадают, новый объект игнорируется, иначе он сохраняется. 4