Почему более высокий коэффициент загрузки в HashMap уменьшит затраты пространства - PullRequest
0 голосов
/ 30 ноября 2018

Из документации Java: «Как правило, коэффициент загрузки по умолчанию (.75) предлагает хороший компромисс между временем и пространственными затратами. Более высокие значения уменьшают накладные расходы пространства , но увеличивают стоимость поиска"

Почему это уменьшает пространство над головой?разве лишние узлы в корзинах не имеют эквивалентного размера дополнительного размера массива?

(в итоге количество записей будет одинаковым!)

1 Ответ

0 голосов
/ 30 ноября 2018

Коэффициент загрузки определяет, насколько полной может стать карта, прежде чем ее емкость удвоится.

Предположим, у вас есть идеальная хеш-функция с надлежащим распределением по сегментам.Допустим, у вас есть карта с емкостью 100 и коэффициентом загрузки 0,75.Это означает, что когда вы добавляете элементы для заполнения 75 сегментов, выделенная емкость удваивается, т.е. становится 200. Таким образом, с 75 фактическими сегментами вы выделяете емкость 200. Служебная нагрузка, т. Е. Потраченное пространство = 125

Теперь давайтескажем, у нас есть еще одна карта с емкостью 100 и коэффициентом нагрузки 0,5.Это означает, что к тому времени, когда на карте будет заполнено 50 фактических блоков, ее емкость удваивается.Таким образом, для 50 записей емкость теперь составляет 200. Накладные расходы = 150.

При более высокой загрузке происходит обратное, т. Е. У вас меньше неиспользуемого пространства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...