Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: resize, load, factor

Что происходит при превышении load factor?

Вопрос проверяет понимание механизма расширения HashMap и его влияния на производительность.

Короткий ответ

При превышении load factor HashMap выполняет расширение (resize).
Создаётся новый массив бакетов большего размера.
Все существующие элементы перераспределяются по новым бакетам.
Операция затратна по времени и памяти.
После расширения количество коллизий уменьшается.

Длинный ответ

Расширение — это ключевой механизм поддержки производительности HashMap.

Определение

Resize — это процесс увеличения внутреннего массива бакетов и перераспределения всех элементов.

Когда происходит resize

Resize выполняется, когда:

  • количество элементов превышает capacity * loadFactor

Например:

  • capacity = 16

  • loadFactor = 0.75

  • threshold = 12

При добавлении 13-го элемента запускается расширение.

Что происходит во время resize

  1. Создаётся новый массив (обычно в 2 раза больше)

  2. Все элементы старой таблицы перебираются

  3. Для каждого элемента пересчитывается бакет

  4. Элементы размещаются в новом массиве

Почему это дорого

  • Задействуется CPU

  • Требуется дополнительная память

  • Вставки временно замедляются

Почему это необходимо

Без resize:

  • бакеты становились бы слишком длинными

  • производительность деградировала бы до O(n)

Вывод

Resize — дорогая, но необходимая операция, поддерживающая стабильную производительность HashMap.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#resize

#load

#factor

Подпишись на Java Developer в телеграм