¿Por qué longitud HashMap es una potencia de 2

Con el fin de permitir un acceso eficiente HashMap, menor impacto posible, que es tratar de poner los datos se distribuye uniformemente. También hablamos sobre la tapa, valor de rango hash al valor de -2147483648 2147483647, probablemente añadir hasta alrededor de 4 mil millones cartografía del espacio, siempre y cuando la correlación de funciones de hash era más pareja suelta, aplicación general es difícil que se produzca la colisión. Pero el problema es un conjunto de cuatro mil millones de longitud, la memoria no es apto. Por lo que el valor hash no se puede utilizar directamente con. También la longitud de la matriz hacer primera operación de módulo antes de su uso, con el fin de obtener el resto a ser almacenado es la posición correspondiente al índice de matriz. Este subíndice de matriz se calcula (n - 1) & hash"" (N matriz que representa la longitud). Esto también explica por qué longitud HashMap es una potencia de dos.

¿Cómo este algoritmo debe diseñarlo?

En primer lugar, podría pensar en utilizar operación de módulo% de lograr. Sin embargo, el enfoque aquí: "módulo (%) la operación si el divisor es una potencia de 2 es equivalente a una reducción de su divisor AND (&) operación (es decir, de hash% Longitud == Hash y (longitud -1) a condición de que la longitud es la potencia enésima de 2;.) "  y  operación de bit binario y,% con respecto a la eficiencia de la operación puede mejorarse, lo que explica por qué longitud HashMap es una potencia de dos.

Publicado 89 artículos originales · ganado elogios 32 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_41345773/article/details/104948877
Recomendado
Clasificación