Назад к вопросам
Junior — Middle
70
Как выбрать подходящий бакет в HashMap для вставки элемента?
Компании, где спрашивали
Ifellow
Ответ от нейросети
sobes.tech AI
В HashMap для выбора подходящего бакета (корзины) используется хеш-функция ключа и размер массива бакетов.
Алгоритм выбора бакета:
- Вычисляется хеш-код ключа с помощью метода
hashCode(). - Хеш-код дополнительно обрабатывается (например, в Java 8 используется метод
hash()для лучшего распределения). - Индекс бакета вычисляется как
index = (n - 1) & hash, гдеn— размер массива бакетов (обычно степень двойки).
Это позволяет эффективно распределять ключи по бакетам и быстро находить нужный элемент.
Пример:
int hash = key.hashCode();
int index = (table.length - 1) & hash;
// table — массив бакетов
Таким образом, битовая операция AND с размером массива минус один обеспечивает индекс в пределах массива.