2010-08-25 4 views
14

Если я использую HashSet с первоначальной мощностью 10 и коэффициентом нагрузки 0,5 затем каждые 5 элементов добавили HashSet будут увеличены или сначала HashSet увеличиваются из 10 элементов, и после того, как на 15 по 20 АТЦ. потенциал будет увеличен?HashSet

ответ

3

Это второй случай. LoadFactor как HashSet, так и hashMap является относительным фактором.

19

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

source

+0

хорошо !!! Я искал это объяснение некоторое время. Таким образом, значение по умолчанию равно 2/3, что означает, что при первоначальном размере 16, когда я заполняю 12, это увеличит пространство. – ha9u63ar

+0

Для Java 7 и 8 коэффициент загрузки по умолчанию для HashSet равен 0,75. – Kent

2

По умолчанию начальной мощности HashMap занимает 16 и коэффициент нагрузки 0.75f ​​(т.е. 75% от текущего размера карты). Коэффициент загрузки показывает, на каком уровне емкость HashMap должна быть удвоена.

Например, произведение мощности и коэффициента нагрузки, как 16 * 0,75 = 12. Это представляет, что после сохранения 12-й ключ - пары значений в HashMap, его мощность становится 32.

Смежные вопросы