Назад к вопросам
Senior
8
Как перевести hashCode (int, возможно отрицательный) в индекс массива бакетов?
Компании, где спрашивали
01.tech
Ответ от нейросети
sobes.tech AI
Чтобы преобразовать hashCode (целое число, возможно отрицательное) в индекс массива бакетов, обычно применяют следующую схему:
- Привести
hashCodeк неотрицательному числу. Для этого часто используют побитовое И с маской0x7FFFFFFF(сбрасываем знак):
int positiveHash = hashCode & 0x7FFFFFFF;
- Взять остаток от деления на размер массива (длина массива должна быть положительной):
int index = positiveHash % buckets.length;
Это гарантирует, что индекс будет в диапазоне от 0 до buckets.length - 1.
Пример:
int hashCode = key.hashCode();
int index = (hashCode & 0x7FFFFFFF) % buckets.length;