Как работает put / get в HashMap?

Ответ

put: вычислили hashCode ключа → перемешали его биты и по & (n-1) определили бакет → в бакете ищем по equals существующий ключ. Если нашли — обновляем значение. Если нет — добавляем новый Node в цепочку (при переполнении бакета — в дерево). get работает симметрично: бакет по hashCode, ключ по equals.

Разбор: put вычисляет hashCode ключа, определяет бакет, внутри бакета ищет ключ по equals: при совпадении обновляет значение, иначе добавляет новый Node; get работает симметрично. Ловушки: HashMap использует цепочки/деревья в бакетах, а не открытую адресацию; индекс бакета вычисляется через дополнительное перемешивание битов hashCode и & (n-1), а не простой остаток; и для разрешения коллизий обязательно сравнение по equals, а не только по hashCode или ==.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться