hashCodeメソッドの最適な実装で受け入れられた答えは、ハッシュコードを見つけるための一見良い方法を提供します。しかし、私はハッシュコードを初めて使用するので、何をすべきかよくわかりません。
1) の場合、選択したゼロ以外の値は重要ですか? 1
素数などの他の数と同じくらい良い31
ですか?
2) については、それぞれの値を c に追加しますか? long
、int
、などの 2 つのフィールドがある場合はどうなりdouble
ますか?
私はこのクラスでそれを正しく解釈しましたか:
public MyClass{
long a, b, c; // these are the only fields
//some code and methods
public int hashCode(){
return 37 * (37 * ((int) (a ^ (a >>> 32))) + (int) (b ^ (b >>> 32)))
+ (int) (c ^ (c >>> 32));
}
}