2015-01-27 3 views
1

Я слышал, что коэффициент загрузки в HashMap восстанавливает ведра в другое место, и лучше сохранить его на уровне 0,75, так что, когда размер коснется 0,75 * текущей емкости, массив ведер перераспределяет в два раза текущую емкостькомпромиссы с коэффициентом загрузки Java

Например, у нас есть емкость 16; массив перераспределяется, когда размер становится 16 * 0,75 = 12. На этом этапе мы создаем дополнительные 16 элементов еще до того, как массив коснется 16, потому что это неэффективно.

Если это время эффективно, как это делается или есть какие-либо компромиссы для использования коэффициента загрузки?

+0

Добро пожаловать в СО, попробуйте найти соответствующие вопросы, прежде чем размещать свои собственные! Вы можете найти этот вопрос информативным http://stackoverflow.com/questions/10901752/what-is-the-significance-of-load-factor-in-hashmap – HavelTheGreat

+1

Этот вопрос, похоже, не связан с функциональным программированием. –

+0

«Это означает, что память неэффективна». -> так что вы имеете в виду, что хеш-таблица должна ждать, чтобы полностью заполниться до выделения новой памяти? эффективность памяти (в ваших условиях) - здесь это не единственный фактор; прочитайте, почему рекомендуется коэффициент загрузки 0,75. –

ответ

1

HashMap работает лучше всего, когда есть низкая скорость столкновения. Чем больше емкость, тем меньше вероятность столкновения. т.е. два ключа в одном ковше.

Чтобы избежать высоких скоростей столкновений, коэффициент загрузки используется для обеспечения того, чтобы базовый массив не превышал 75%.

BTW Дополнительная память, используемая массивом, мала по сравнению с другими накладными расходами.

+1

* позже * емкость? – gknicker

+0

@gknicker Спасибо. ;) –

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