quello che sarebbe il più veloce e più robusta (in termini di unicità) modo per implementare un metodo comeCreazione di un hash da diversi stringa oggetti Java
public abstract String hash(String[] values);
Il values[]
array ha da 100 a 1.000 membri, ciascuno di un che con poche decine di caratteri e il metodo deve essere eseguito circa 10.000 volte/sec su un diverso array values[]
ogni volta.
Se una stringa lunga viene creata utilizzando un buffer StringBuilder
e quindi un metodo hash richiamato sul contenuto del buffer, o è meglio continuare a richiamare il metodo hash per ogni stringa da values[]
?
Ovviamente è necessario un hash di almeno 64 bit (ad es. MD5) per evitare collisioni, ma c'è qualcosa di più semplice e veloce che potrebbe essere fatto, con la stessa qualità?
Per esempio, per quanto riguarda
public String hash(String[] values)
{
long result = 0;
for (String v:values)
{
result += v.hashCode();
}
return String.valueOf(result);
}
Questo approccio sembra ragionevole.Si consiglia di memorizzare il valore hash in un campo in modo da non doverlo ricalcolare ogni volta, purché lo si aggiorni ogni volta che la stringa [] cambia. –
Certo, ma nell'applicazione in questione l'array values [] cambia continuamente. :-) – PNS