Выбор ответа Junior Коллекции изнутри спрашивают часто обновлено

Как HashMap находит корзину

Вопрос

Как HashMap определяет корзину для ключа?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: По hashCode() ключа: старшие биты смешиваются, затем (n - 1) & hash. Корзина вычисляется из hashCode: hash = h ^ (h 16), индекс (n - 1) & hash, где n степень двойки. equals вызывается только внутри корзины, чтобы отличить ключи с совпавшим хешем.

Варианты ответа

  1. По hashCode() ключа: старшие биты смешиваются, затем (n - 1) & hashправильный ответ
  2. По equals(): новый ключ сравнивается со всеми ключами, уже лежащими в таблице
  3. По порядку вставки: каждая новая пара идёт в следующую свободную корзину таблицы
  4. По compareTo(): ключи раскладываются в отсортированном порядке

Разбор

Корзина вычисляется из hashCode: hash = h ^ (h >>> 16), индекс (n - 1) & hash, где n степень двойки. equals вызывается только внутри корзины, чтобы отличить ключи с совпавшим хешем. Порядок вставки хранит LinkedHashMap, сортировку TreeMap.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме