Senior
52
¿Cómo convertir hashCode (int, posiblemente negativo) en un índice de matriz de buckets?
Empresas donde se preguntó
01.tech
Respuesta de la IA
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;