Выбор ответа Junior Коллекции изнутри спрашивают часто обновлено
Как HashMap находит корзину
Вопрос
Как HashMap определяет корзину для ключа?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: По hashCode() ключа: старшие биты смешиваются, затем (n - 1) & hash. Корзина вычисляется из hashCode: hash = h ^ (h 16), индекс (n - 1) & hash, где n степень двойки. equals вызывается только внутри корзины, чтобы отличить ключи с совпавшим хешем.
Варианты ответа
- По
hashCode()ключа: старшие биты смешиваются, затем(n - 1) & hashправильный ответ - По
equals(): новый ключ сравнивается со всеми ключами, уже лежащими в таблице - По порядку вставки: каждая новая пара идёт в следующую свободную корзину таблицы
- По
compareTo(): ключи раскладываются в отсортированном порядке
Разбор
Корзина вычисляется из hashCode: hash = h ^ (h >>> 16), индекс (n - 1) & hash, где n степень двойки. equals вызывается только внутри корзины, чтобы отличить ключи с совпавшим хешем. Порядок вставки хранит LinkedHashMap, сортировку TreeMap.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.