Gymterview
middle

Сколько переходов происходит в момент вызова HashMap.get(key) по ключу, который есть в таблице

Для ключа null: один переход — вызов специального метода обработки null-ключа (в ранних версиях — getForNullKey(), в Java 8+ — проверка первого элемента корзины 0).

Для ключа, отличного от null: четыре логических шага:

  1. Вычисление хэш-кода ключа (hash = hashCode() ^ (hashCode() >>> 16)).
  2. Определение индекса корзины (hash & (capacity - 1)).
  3. Поиск элемента в корзине (обход списка/дерева с вызовом equals()).
  4. Возврат значения найденного элемента.

В реальности шаги 1-2 — это простые вычисления без обращения к памяти, а шаг 3 может потребовать нескольких переходов по ссылкам в зависимости от количества элементов в корзине.

На собеседовании: для null — 1 переход, для не-null — 4 шага. Объясните каждый шаг.