Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: hashmap, hashcode, equals

Как работает HashMap при вставке ключа?

Вопрос проверяет глубокое понимание внутреннего устройства HashMap и работы хеширования.

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

HashMap вычисляет hashCode() ключа и определяет номер бакета.
Если бакет пуст — элемент просто добавляется.
Если бакет занят — происходит проверка на равенство ключей.
При коллизии элементы хранятся в списке или дереве.
При необходимости карта расширяется.

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

Процесс вставки состоит из нескольких логических шагов.

Основная идея

HashMap хранит данные в массиве бакетов, индекс которых вычисляется по хешу ключа.

Этапы вставки

При выполнении:

map.put(key, value);

происходит следующее:

  1. Вызывается key.hashCode()

  2. Хеш нормализуется (битовые операции)

  3. Вычисляется индекс бакета

  4. Проверяется содержимое бакета

Работа с коллизиями

Если бакет уже содержит элементы:

  • Сравниваются ключи через equals()

  • Если ключ найден — значение заменяется

  • Если ключ новый — он добавляется в структуру бакета

Возможные структуры:

  • связанный список

  • красно-чёрное дерево (при большом числе элементов)

Когда происходит расширение

Расширение (resize) происходит, если:

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

При этом:

  • создаётся новый массив бакетов

  • все элементы перераспределяются

Вывод

HashMap обеспечивает быстрый доступ за счёт хеширования, но корректная работа зависит от hashCode() и equals().

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Java

    Java

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

#hashmap

#hashcode

#equals

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