【发布时间】:2013-04-11 10:03:21
【问题描述】:
在 SO 中,我已经阅读了几个与哈希码实现相关的答案以及使用 XOR 运算符的建议。 (例如Why are XOR often used in java hashCode() but another bitwise operators are used rarely?)。
当我使用 Eclipse 生成哈希码函数时,其中field 是一个对象,timestamp 是一个 long,输出是:
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ field == null) ? 0 : field.hashCode());
return result;
}
不使用下面的异或运算符有什么原因吗?
result = prime * result + (int) (timestamp ^ (timestamp >>> 32));
【问题讨论】:
-
我在这里看到了 XOR
prime * result + (int) (timestamp ^ (timestamp >>> 32))... -
@Heuster 那是他的编辑小姐。实际上 Eclipse 只创建了这一行
result = prime * result + field == null) ? 0 : field.hashCode());