Best implementation for hashCode methodで受け入れられた答えは、ハッシュコードを見つけるための一見良い方法を提供します。しかし、私はハッシュコードの新機能なので、何をすべきか分かりません。良いhashCode()実装
1)については、私が選択した非ゼロ値は重要ですか? 1
は素数31
などの他の数字と同じくらい良いですか?
2)については、それぞれの値をcに追加しますか? long
、int
、double
などの2つのフィールドがある場合はどうなりますか?
は私が右のこのクラスでそれを解釈しました:
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));
}
}
どのような種類のアルゴリズムが良いですか?例のものは良いですか?各要素に異なる素数を使うべきですか? – Justin
私はあなたの#1を理解していますが、衝突が少なくなる方が良いです。 – Justin
すべてのコードは何でもかまいませんが、*良い*コードであるために、hadhCodeは "何も"あってはいけません。 Object.hashCode()を参照してください。 – Bohemian