Почему изменение размера осуществляется так, как оно есть?
У меня есть несколько вопросов о восстановленииHashMaps
при добавлении новой пары ключ-значение. Я буду задавать вопросы, основанные на этих фактах (они верны для Oracle JVM, но я не уверен, верны ли они для других JVM):
HashMap
иметь больший массив внутренних таблиц каждый раз, когда вы увеличиваете HashMap больше, чем порог (threshold = loadFactor * numberOfEntries). Неважно, в какую корзину помещается вновь созданная запись - карта все равно будет увеличиваться. Даже если все записи входят в одно ведро (т. Е. Их ключи) hashCode()
вернуть тот же номер).HashMap
не сжимается при удалении данных. Даже если все ключи удалены изHashMap
, его внутренний размерТаблица не меняется.Теперь вопросы:
Верны ли эти факты?Если они есть, то:
Почему изменение размера реализовано таким образом? Намерено ли вырастить внутренний стол, даже если это явно не нужно? Или ошибка?Почему это не дает усадки?