可能性の重複:
Why does Java's hashCode() in String use 31 as a multiplier?hashCodeをオーバーライドしますベストプラクティス
@Override public int hashCode() {
int result = 17 + hashDouble(re);
result = 31 * result + hashDouble(im);
return result;
}
これは、 "効果的なJavaの" からのコードです。エンタープライズアプリケーションで広く使用されていますか?私は静的な値を追加することに懸念しています。あるいは、何らかのユーティリティクラスで最終変数として17と31を定義し、そこからそれらを参照する必要がありますか?
誰かがこれらの数字のために何かを説明することができますか? 31は無作為に選ばれた素数ですか?