Java の String の hashCode() メソッドで乗数として 31 が使用されるのはなぜですか?
Java ドキュメントでは、String オブジェクトの計算を指定しています。ハッシュ コードは次のとおりです:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
ここでs[i] は文字列の i 番目の文字、n は文字列の長さ、^ は累乗を表します。この式には、固定乗数 31 が組み込まれています。
乗数として 31 を使用する根拠
Joshua Bloch の尊敬する著作「Effective Java」によれば、31 の選択は乗数はいくつかに依存するため、要素:
以上がJava の文字列の「hashCode()」が乗数として 31 を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。