关于这个问题(Efficient hashCode() implementation)我还有一个问题。哈希码实现
我有一个“价值”类,哪些实例是持久化在数据库中。因此这个类的实例都有一个唯一的ID。
因此,我简单地通过返回这个id来实现哈希码方法(和相关的equals方法)。
当使用Eclipse哈希码生成器,并告诉Eclipse中只使用ID属性的一代,我有以下方法:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
我想简单地返回id为更有效,因为我知道这个ID是唯一的。我对吗 ?
在此先感谢
如果结果是1,为什么你会因结果而m ly。你的功能实际上是“返回31 + ID;”。 – Tom 2009-07-02 14:26:28
顺便说一句,你可能会摆脱31,因为它不会改变id的分布。简而言之,你实现的hashcode没有做任何特殊的事情,你应该只返回id。话虽如此,我不确定什么是“更好”。 – Tom 2009-07-02 14:28:12