Il contratto generale di hashCode è come Javadoc dice:
Ogni volta che viene richiamato sullo stesso oggetto più di una volta nel corso di un'esecuzione di un'applicazione Java, il metodo hashCode deve sempre restituire lo stesso numero intero, a condizione no le informazioni utilizzate nei confronti di pari merito sull'oggetto sono modificate. Questo numero intero non deve rimanere coerente da un'esecuzione di un'applicazione a un'altra esecuzione della stessa applicazione.
Is the same word going to get the same hash every time that I run it?
Durante l'esecuzione dell'applicazione, invocando hashCode()
di parole uguali (assumo la parola è un'istanza String
e equals()
è stato sostituito in String
) deve restituire lo stesso numero intero.
EDIT Dal momento che la javadoc per String.hashCode()
specifica come viene calcolato il codice hash di una stringa, è deterministica.
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]
Non ci scommetterò ... Potrebbe anche accadere che l'hash possa essere correlato all'indirizzo dell'indirizzo, e quindi potrebbe cambiare anche da una corsa a quella successiva ... –
Vedere http: //stackoverflow.com/questions/1516843/java-object-hashcode-result-constant-across-all-jvms-systems – Annabelle
Perché non chiedere ad un amico di eseguire un esempio di codice e vedere? Perché non pubblicare il suddetto piccolo pezzo di codice in modo che tutti possiamo farlo? :) Detto questo, io * non penso * che hashCode sia coerente tra più esecuzioni, solo per quello nella VM. – Shark