Java HashTable LoadFactor - PullRequest
       2

Java HashTable LoadFactor

5 голосов
/ 19 марта 2012

В Java Hashtable есть конструктор, в котором вы можете указать loadFactor.Однако, если initialCapacity (n) известен, какой смысл указывать loadFactor?

Предполагая, что размер его массива сегментов (констант) постоянен, конструктор Hashtable(int initialCapacity, float loadFactor) просто создает HashТаблица, которая имеет большую емкость, чем initialCapacity, чтобы обеспечить правильный loadFactor?

Ответы [ 3 ]

6 голосов
/ 19 марта 2012

Предполагая, что размер его массива сегментов постоянен, [& hellip;]

Это предположение неверно. Размер массива сегментов изменяется при необходимости, чтобы гарантировать, что доля непустых сегментов не может превышать loadFactor.

(Примечание: в Javadoc говорится, что «Параметры начальной емкости и коэффициента загрузки являются просто подсказками для реализации. Точные детали относительно того, когда и вызывается ли метод перефразирования, зависят от реализации», поэтому вышесказанное не следует воспринимать как строгую гарантию. Но это общее поведение.)

2 голосов
/ 19 марта 2012

Потому что это только начальная емкость. HashMap - это динамическая структура; Вы можете превысить начальную емкость, для которой используется коэффициент загрузки - чтобы знать, когда расширяться.

(И структура данных не может гадать ваши намерения, если вы хотите сказать вы , что вы никогда не превысите эту начальную емкость; это структура данных, а не ясновидящий ИИ; )).

0 голосов
/ 19 марта 2012

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

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