Sobes.tech
Назад к вопросам
Senior
8

Как перевести hashCode (int, возможно отрицательный) в индекс массива бакетов?

Компании, где спрашивали
01.tech

Ответ от нейросети

sobes.tech AI

Чтобы преобразовать hashCode (целое число, возможно отрицательное) в индекс массива бакетов, обычно применяют следующую схему:

  1. Привести hashCode к неотрицательному числу. Для этого часто используют побитовое И с маской 0x7FFFFFFF (сбрасываем знак):
int positiveHash = hashCode & 0x7FFFFFFF;
  1. Взять остаток от деления на размер массива (длина массива должна быть положительной):
int index = positiveHash % buckets.length;

Это гарантирует, что индекс будет в диапазоне от 0 до buckets.length - 1.

Пример:

int hashCode = key.hashCode();
int index = (hashCode & 0x7FFFFFFF) % buckets.length;