middle
Сколько переходов происходит в момент вызова HashMap.get(key) по ключу, который есть в таблице
Для ключа null: один переход — вызов специального метода обработки null-ключа (в ранних версиях — getForNullKey(), в Java 8+ — проверка первого элемента корзины 0).
Для ключа, отличного от null: четыре логических шага:
- Вычисление хэш-кода ключа (hash = hashCode() ^ (hashCode() >>> 16)).
- Определение индекса корзины (hash & (capacity - 1)).
- Поиск элемента в корзине (обход списка/дерева с вызовом equals()).
- Возврат значения найденного элемента.
В реальности шаги 1-2 — это простые вычисления без обращения к памяти, а шаг 3 может потребовать нескольких переходов по ссылкам в зависимости от количества элементов в корзине.
На собеседовании: для null — 1 переход, для не-null — 4 шага. Объясните каждый шаг.