首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哈希码方法的最佳实现?

哈希码方法的最佳实现?
EN

Stack Overflow用户
提问于 2018-08-07 00:28:48
回答 2查看 0关注 0票数 0

我们如何决定如何最好地实现hashCode()方法(假设Eques方法已被正确重写)?

EN

回答 2

Stack Overflow用户

发布于 2018-08-07 09:09:54

一个简短的版本

  1. 创建一个int result并指定一个非零值。
  2. 对于方法中测试的每个字段 f,通过以下equals()方式计算哈希码c
    • 如果字段f是a boolean:calculate (f ? 0 : 1);
    • 如果该字段f是bytecharshortint:计算(int)f;
    • 如果字段f是a long:calculate (int)(f ^ (f >>> 32));
    • 如果字段f是a float:calculate Float.floatToIntBits(f);
    • 如果字段f是a double:计算Double.doubleToLongBits(f)并处理返回值,就像每个long值一样;
    • 如果字段f是对象:使用hashCode()方法的结果或0如果f == null;
    • 如果字段f是一个数组:将每个字段视为单独的元素,并以递归方式计算散列值,并按照下面的描述组合这些值。

3. 将哈希值cresultresult = 37 * result + c

4. 返回 result

票数 0
EN

Stack Overflow用户

发布于 2018-08-07 10:03:31

最好使用Eclipse提供的功能。

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

https://stackoverflow.com/questions/-100000508

复制
相关文章

相似问题

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