Nuestros mejores investigadores agotaron sus reservas de café, por su búsqueda día y noche por la respuesta, hasta que José encontró el resultado en GitLab así que ahora la compartimos con nosotros.
Solución:
Integer funcionará mejor que String. El siguiente es el código para el cálculo del código hash para ambos.
Implementación de código hash entero
/**
* Returns a hash code for this Integer
.
*
* @return a hash code value for this object, equal to the
* primitive int
value represented by this
* Integer
object.
*/
public int hashCode()
return value;
Implementación de código hash de cadena
/** * Returns a hash code for this string. The hash code for a *
String
object is computed as ** s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] ** usando
int
aritmética, dondes[i]
es el * iel carácter del string,n
es la longitud de * el stringy^
indica exponenciación. * (El valor hash del vacío string es cero.) * * @return un valor de código hash para este objeto. */ public int hashCode() int h = hash; if (h == 0) int off = desplazamiento; valor char[] = valor; int len = cuenta; for (int i = 0; i < len; i++) h = 31*h + val[off++]; hash = h; devuelve h;Si tiene un problema de rendimiento, es muy poco probable que el problema se deba a HashMap/HashTable. mientras hash string es un poco más caro que los enteros hash, es una diferencia bastante pequeña, y hashCode se almacena en caché, por lo que no se vuelve a calcular si usa el mismo string objeto, es poco probable que obtenga un beneficio de rendimiento significativo al convertirlo primero a entero.
Probablemente sea más fructífero buscar en otro lugar el origen de su problema de rendimiento. ¿Ya intentaste perfilar tu código?
Si tienes alguna vacilación o capacidad de reaccionar nuestro crónica te proponemos escribir una crítica y con mucho placer lo estudiaremos.
¡Haz clic para puntuar esta entrada!(Votos: 0 Promedio: 0)Utiliza Nuestro Buscador