Senior
46
Comment convertir hashCode (int, éventuellement négatif) en un index de tableau de buckets?
Entreprises à qui on a demandé
01.tech
Réponse de l'IA
sobes.tech IA
Чтобы преобразовать 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;