Вопрос проверяет понимание механизма расширения HashMap и его влияния на производительность.
При превышении load factor HashMap выполняет расширение (resize).
Создаётся новый массив бакетов большего размера.
Все существующие элементы перераспределяются по новым бакетам.
Операция затратна по времени и памяти.
После расширения количество коллизий уменьшается.
Расширение — это ключевой механизм поддержки производительности HashMap.
Resize — это процесс увеличения внутреннего массива бакетов и перераспределения всех элементов.
Resize выполняется, когда:
количество элементов превышает capacity * loadFactor
Например:
capacity = 16
loadFactor = 0.75
threshold = 12
При добавлении 13-го элемента запускается расширение.
Создаётся новый массив (обычно в 2 раза больше)
Все элементы старой таблицы перебираются
Для каждого элемента пересчитывается бакет
Элементы размещаются в новом массиве
Задействуется CPU
Требуется дополнительная память
Вставки временно замедляются
Без resize:
бакеты становились бы слишком длинными
производительность деградировала бы до O(n)
Resize — дорогая, но необходимая операция, поддерживающая стабильную производительность HashMap.