Потому что они, честно говоря, не знают, что делают.
В документации для LinkedHashMap
указывается, что сведения о мощности и коэффициенте загрузки точно такие же, как для HashMap
, а HashMap
указывает
У экземпляра HashMap есть два параметра, влияющих на его производительность: начальная емкость и коэффициент загрузки. Емкость — это количество сегментов в хэш-таблице, а начальная емкость — это просто емкость на момент создания хэш-таблицы. Коэффициент загрузки — это мера того, насколько полной может быть заполнена хэш-таблица, прежде чем ее емкость будет автоматически увеличена. Когда количество записей в хеш-таблице превышает произведение коэффициента загрузки и текущей емкости, хеш-таблица повторно хешируется (т. е. перестраиваются внутренние структуры данных), так что количество ведра.
«Емкость» карты — это количество сегментов хэш-таблицы, а не количество записей, разрешенных на карте.
Таким образом, хеш-таблица для LinkedHashMap
, которую вы описываете, будет изменена при добавлении (MAX_ENTRIES + 1) * 0.75
записей, что, по сути, составит три четверти от MAX_ENTRIES
.
Я подозреваю, что они пытались гарантировать, что на карте есть место ровно для одной дополнительной записи, чтобы карта не изменялась в размере между вставкой новой записи и удалением самой старой записи, но это не так. собственно как это работает.
person
Louis Wasserman
schedule
02.09.2015