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