SOでは、ハッシュコードの実装とXOR演算子の使用に関する提案に関連するいくつかの回答を読みました。(例えば、Java hashCode() では XOR がよく使用されるのに、別のビット演算子はめったに使用されないのはなぜですか? )。
Eclipse を使用してfield
、オブジェクトとtimestamp
long であるハッシュコード関数を生成すると、出力は次のようになります。
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ field == null) ? 0 : field.hashCode());
return result;
}
以下のように XOR 演算子を使用しない理由はありますか?
result = prime * result + (int) (timestamp ^ (timestamp >>> 32));