集合的hashCode方法的最佳实现

集合的hashCode方法的最佳实现,第1张

集合的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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5489012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存