¿Cuál puede ser el más rápido y más robusto (en términos de singularidad) camino para la implementación de un método comoCreación de un hash de varios cadena de objetos Java
public abstract String hash(String[] values);
La matriz values[]
tiene de 100 a 1.000 miembros, cada uno de una que con pocas docenas de caracteres, y el método debe ejecutarse aproximadamente 10,000 veces/seg en una matriz values[]
diferente cada vez.
¿Debe construirse una cadena larga utilizando un buffer StringBuilder
y luego un método hash invocado en el contenido del buffer, o es mejor seguir invocando el método hash para cada cadena de values[]
?
Obviamente se necesita un hash de al menos 64 bits (por ejemplo, MD5) para evitar colisiones, pero ¿hay algo más simple y rápido que se pueda hacer con la misma calidad?
Por ejemplo, ¿qué pasa con
public String hash(String[] values)
{
long result = 0;
for (String v:values)
{
result += v.hashCode();
}
return String.valueOf(result);
}
Ese enfoque parece razonable.Es posible que desee almacenar el valor hash en un campo para que no tenga que volver a calcularlo cada vez, siempre y cuando lo actualice cada vez que su String [] cambie. –
Claro, pero en la aplicación en cuestión la matriz values [] cambia todo el tiempo. :-) – PNS