umowy generalnej z hashcode jest jako Javadoc mówi:
Ilekroć jest wywoływane na tym samym obiekcie więcej niż jeden raz w trakcie wykonywania aplikacji Java, metoda hashCode musi konsekwentnie zwracają taką samą liczbę całkowitą, o ile nie informacje używane w porównywaniu równań na obiekcie są modyfikowane. Ta liczba całkowita nie musi pozostawać spójna od jednego wykonania aplikacji do innego wykonania tej samej aplikacji.
Is the same word going to get the same hash every time that I run it?
Podczas wykonywania aplikacji, powołując hashCode()
na równych słów (zakładam, że słowo jest instancja String
i equals()
zostało zmienione w String
) powinien zwrócić tę samą liczbę całkowitą.
EDIT Od javadoc dla String.hashCode()
określa sposób kod hash ciąg jest obliczane jest deterministyczny.
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]
Nie będę się na to zakładał ... Może się nawet zdarzyć, że hasz będzie powiązany z adresem obiektu, a potem może się zmienić nawet z jednego biegu na następny ... –
Zobacz http: //stackoverflow.com/questions/1516843/java-object-hashcode-result-constant-across-all-jvms-systems – Annabelle
Dlaczego nie poprosić znajomego o uruchomienie przykładowego fragmentu kodu i zobaczenie go? Dlaczego nie zamieścić wspomnianego krótkiego fragmentu kodu, aby wszyscy mogli to zrobić? :) Mówiąc to, * nie uważam *, że hashCode jest zgodny pomiędzy wieloma przebiegami, tylko że pozostaje w VM. – Shark