有名なJDKのドキュメントには次のように書かれています:java.lang.String.hashCode()
String オブジェクトのハッシュ コードは次のように計算されます。
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
は文字列の * * 番目の文字、 は文字列の長さであり、べき乗を示し
int
ます。s[i]
i
n
^
この式の標準的な実装は次のとおりです。
int hash = 0;
for (int i = 0; i < length; i++)
{
hash = 31*hash + value[i];
}
return hash;
これを見ると、アルゴリズムのコースで寝ていたような気がします。その数式は、上記のコードにどのように変換されますか?