¿Cuál es la importancia del factor de carga en HashMap?

Resuelto Priyank Doshi asked hace 12 años • 9 respuestas

HashMaptiene dos propiedades importantes: sizey load factor. Revisé la documentación de Java y dice que 0.75fes el factor de carga inicial. Pero no puedo encontrar su uso real.

¿Alguien puede describir cuáles son los diferentes escenarios en los que necesitamos establecer el factor de carga y cuáles son algunos valores ideales de muestra para diferentes casos?

Priyank Doshi avatar Jun 06 '12 00:06 Priyank Doshi
Aceptado

La documentación lo explica bastante bien:

Una instancia de HashMap tiene dos parámetros que afectan su rendimiento: capacidad inicial y factor de carga. La capacidad es la cantidad de depósitos en la tabla hash y la capacidad inicial es simplemente la capacidad en el momento en que se crea la tabla hash. El factor de carga es una medida de qué tan llena se permite que esté la tabla hash antes de que su capacidad aumente automáticamente. Cuando el número de entradas en la tabla hash excede el producto del factor de carga y la capacidad actual, la tabla hash se repite (es decir, se reconstruyen las estructuras de datos internas) para que la tabla hash tenga aproximadamente el doble de la cantidad de depósitos.

Como regla general, el factor de carga predeterminado (0,75) ofrece un buen equilibrio entre los costos de tiempo y espacio. Los valores más altos disminuyen la sobrecarga de espacio pero aumentan el costo de búsqueda (reflejado en la mayoría de las operaciones de la clase HashMap, incluidas get y put). El número esperado de entradas en el mapa y su factor de carga se deben tener en cuenta al establecer su capacidad inicial, para minimizar el número de operaciones de repetición. Si la capacidad inicial es mayor que el número máximo de entradas dividido por el factor de carga, nunca se producirán operaciones de repetición.

Como ocurre con todas las optimizaciones de rendimiento, es una buena idea evitar optimizar las cosas prematuramente (es decir, sin datos concretos sobre dónde están los cuellos de botella).

NPE avatar Jun 05 '2012 17:06 NPE

La capacidad inicial predeterminada de las HashMaptomas es 16 y el factor de carga es 0,75 f (es decir, el 75 % del tamaño actual del mapa). El factor de carga representa a qué nivel HashMapse debe duplicar la capacidad.

Por ejemplo , producto de capacidad y factor de carga como 16 * 0.75 = 12. Esto representa que después de almacenar el duodécimo par clave-valor en HashMap, su capacidad pasa a ser 32.

user2791282 avatar Oct 17 '2013 12:10 user2791282