首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >散列代码实现

散列代码实现
EN

Stack Overflow用户
提问于 2009-07-02 14:15:01
回答 2查看 541关注 0票数 0

关于这个问题(Efficient hashCode() implementation),我还有一个问题。

我有一个"value“类,它的实例被持久化在数据库中。因此,这个类的实例都有一个惟一的ID。

因此,我简单地通过返回此id就实现了散列代码方法(以及相关的equals方法)。

当使用Eclipse hashcode生成器并告诉Eclipse仅使用ID属性生成时,我有以下方法:

代码语言:javascript
复制
    @Override
    public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + id;
            return result;
    }

我认为简单地返回id更有效,因为我知道这个id是唯一的。我说的对吗?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-02 14:18:57

这并不是因为ID的唯一性,而是因为它用于相等性检查,是唯一用于相等性检查的东西。

Eclipse中的样板只有在使用多个字段进行相等时才有意义。

票数 5
EN

Stack Overflow用户

发布于 2009-07-02 14:16:55

如果你的目标是身份唯一性,那么绝对可以。

但请记住,由于您(可能)没有在哈希函数的可能范围内随机分布您的值(即,int的所有值),因此对于任何依赖于均匀分布的哈希的代码来说,性能都可能是一个问题。

附注:这“可能”来自于我的假设,即这些唯一的in可能是数据库中的标识值。如果它们真的是随机分布的,请忽略我的警告。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1074629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档