16. Как устроен HashSet, сложность основных операций.

16. Как устроен HashSet, сложность основных операций.

UNKNOWN
  • Т.к. класс реализует интерфейс Set, он может хранить только уникальные значения;
  • Может хранить NULL – значения;
  • Порядок добавления элементов вычисляется с помощью хэш-кода;
  • HashSet также реализует интерфейсы Serializable и Cloneable.

Для поддержания постоянного времени выполнения операций время, затрачиваемое на действия с HashSet, должно быть прямо пропорционально количеству элементов в HashSet + «емкость» встроенного экземпляра HashMap (количество «корзин»). Поэтому для поддержания производительности очень важно не устанавливать слишком высокую начальную ёмкость (или слишком низкий коэффициент загрузки).

Коэффициент загрузки = Количество хранимых элементов в таблице / размер хэш-таблицы Например, если изначальное количество ячеек в таблице равно 16, и коэффициент загрузки равен 0,75, то из этого следует, что когда количество заполненных ячеек достигнет 12, их количество автоматически увеличится.

Не является структурой данных с встроенной синхронизацией, поэтому если с ним работают одновременно несколько потоков, и как минимум один из них пытается внести изменения, необходимо обеспечить синхронизированный доступ извне.

Set s = Collections.synchronizedSet(new HashSet(...));


Предыдущий вопрос: 15. Что будет, если добавлять элементы в TreeSet по возрастанию?

Следующий вопрос: 17. Как устроен LinkedHashSet, сложность основных операций.

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку:напишите мне

Report Page