栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

集合的hashCode方法的最佳实现

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

集合的hashCode方法的最佳实现

最好的实现?这是一个难题,因为它取决于使用模式。

在几乎所有情况下,Josh Bloch的 有效Java项目8(第二版)中都提出了合理的良好实现。最好的办法是在那里查找,因为作者在那里解释了为什么这种方法很好。

简短版
1. 创建一个

int result
并分配一个非零值。

  1. 对于在方法中测试的每个字段 f,通过以下equals()方式计算哈希码c:

  2. 如果字段f为boolean:计算

    (f ? 0 : 1)
    ;

  3. 如果该字段f是
    byte
    ,char,short或int:计算
    (int)f
    ;
  4. 如果字段f为
    long
    :计算
    (int)(f ^ (f >>> 32))
    ;
  5. 如果字段f为
    float
    :计算
    Float.floatToIntBits(f)
    ;
  6. 如果字段f是
    double
    :计算
    Double.doubleToLongBits(f)
    和处理返回值,就像每个长值一样;
  7. 如果字段f是一个对象:使用hashCode()方法的结果或如果为0 f == null;
  8. 如果字段f是一个数组:请将每个字段视为单独的元素,并以递归方式计算哈希值,然后组合值,如下所述。
  9. 将哈希值
    c
    result
result = 37 * result + c
  1. 返回
    result


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号