Aquí está mi situación. Estoy usando dos java.util.HashMap para almacenar algunos datos usados frecuentemente en una aplicación web Java que se ejecuta en Tomcat. Sé el número exacto de entradas en cada Hashmap. Las claves serán cadenas, y enter respectivamente.Rendimiento de HashMap con diferente capacidad inicial y factor de carga
Mi pregunta es, ¿cuál es la mejor manera de establecer la capacidad inicial y el factor de carga?
¿Debo establecer la capacidad igual a la cantidad de elementos que tendrá y la capacidad de carga a 1.0? Me gustaría el mejor rendimiento absoluto sin usar demasiada memoria. Sin embargo, me temo que la mesa no se llenaría de manera óptima. Con una tabla del tamaño exacto necesario, ¿no habrá una colisión clave, lo que provocará que un escaneo (generalmente corto) encuentre el elemento correcto?
Suponiendo (y esto es un estiramiento) que la función hash es un simple mod 5 de las claves enteras, ¿no significaría que las teclas 5, 10, 15 tocarían el mismo cubo y luego causarían una búsqueda para llenar los cubos al lado de ellos? ¿Una capacidad inicial más grande aumentaría el rendimiento?
Además, si hay una mejor estructura de datos que un hashmap para esto, estoy completamente abierto a eso también.
¿Cuántas entradas hay en el mapa y cuál es la longitud promedio de la clave de cadena? – Avi
el total de entradas oscilará entre 20 - 50 y la longitud de la cadena de caracteres tendrá un número de caracteres entre 10-30 –
Eso es bastante pequeño, ¿está seguro de que incluso tendrá que preocuparse? A menos que tenga muchas instancias solo vaya con los parámetros predeterminados de HashMap. – starblue