hashCode
ユーザーと製品の両方が疑似ランダム ハッシュ コードを作成しても、それほど悪くはありません。user
またはの hashCode 実装が不適切なためにハッシュの衝突が心配な場合はproduct
、ソース ハッシュ コードの 1 つに素数を掛けます。
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((product == null) ? 0 : product.hashCode());
result = prime * result + ((user == null) ? 0 : user.hashCode());
return result;
}
[ソース] | [ソース]を選択すると、Eclipse はまさにこのコードをビルドします。hashCode() と equals() を生成します。
Thilo が述べたように、単純にArrays.hashCode(new Object[]{ user, product })
;を使用することもできます。この呼び出しはnull
、ユーザーまたは製品の値を処理し、結果に 31 を掛けます (手書きのコードと同じ)。Google Guava を使用している場合Objects.hashCode(Object...)
、意図を少し明確にして varargs を使用する がありますが、これは に委任するだけArrays.hashCode
です。