在 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));