关于这个问题(Efficient hashCode() implementation),我还有一个问题。
我有一个"value“类,它的实例被持久化在数据库中。因此,这个类的实例都有一个惟一的ID。
因此,我简单地通过返回此id就实现了散列代码方法(以及相关的equals方法)。
当使用Eclipse hashcode生成器并告诉Eclipse仅使用ID属性生成时,我有以下方法:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}我认为简单地返回id更有效,因为我知道这个id是唯一的。我说的对吗?
提前感谢
发布于 2009-07-02 14:18:57
这并不是因为ID的唯一性,而是因为它用于相等性检查,是唯一用于相等性检查的东西。
Eclipse中的样板只有在使用多个字段进行相等时才有意义。
发布于 2009-07-02 14:16:55
如果你的目标是身份唯一性,那么绝对可以。
但请记住,由于您(可能)没有在哈希函数的可能范围内随机分布您的值(即,int的所有值),因此对于任何依赖于均匀分布的哈希的代码来说,性能都可能是一个问题。
附注:这“可能”来自于我的假设,即这些唯一的in可能是数据库中的标识值。如果它们真的是随机分布的,请忽略我的警告。
https://stackoverflow.com/questions/1074629
复制相似问题