Senior
78
Hogyan lehet a hashCode-t (int, esetleg negatív) átalakítani egy vödör tömb indexévé?
Cégeket kérdeztek
01.tech
Válasz az MI-től
sobes.tech MI
Чтобы преобразовать 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;