もう遠い昔の話だし、今さらどうでもいいことだけど、日本語資料が見当たらなかったので、まとめておく。 実は Java2 (1.2) 以降とそれより前で String.hashCode() のアルゴリズムが異なっている。 現在の hashCode 現在 (1.2 以降) のアルゴリズムは単純にすべての文字に適当な係数をかけて算出する。 public int hashCode() この文字列のハッシュコードを返します。String のハッシュコードは、次の方法で計算します。 s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] int 算術を使います。s[i] は文字列の i 番目の文字、n は文字列の長さ、^ は、べき乗を示します。空の文字列のハッシュ値は 0 です。 ちなみに Java で書くと以下のようになる。*1 public int hashCode