Sobes.tech
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 (целое число, возможно отрицательное) в индекс массива бакетов, обычно применяют следующую схему:

  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;