【发布时间】:2010-11-07 15:50:16
【问题描述】:
关于这个问题 (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,为什么要按结果进行 mulply。您的功能实际上是“返回 31 + id;”。
-
顺便说一句,你不妨去掉 31,因为它不会改变 id 的分布。简而言之,您实现的哈希码并没有做任何特别的事情,您应该只返回 id。话虽如此,我不确定什么会“更好”。
标签: java