程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了集合的hashCode方法的最佳实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决集合的hashCode方法的最佳实现?

开发过程中遇到集合的hashCode方法的最佳实现的问题如何解决?下面主要结合日常开发的经验,给出你关于集合的hashCode方法的最佳实现的解决方法建议,希望对你解决集合的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. 将哈希值cresult
  10. @H_419_54@
    result = 37 * result + c
    
    1. 返回 result
    2. @H_419_54@

      解决方法

      我们如何确定hashCode()用于集合的方法的最佳实现(假设equals方法已被正确覆盖)?

      @H_874_77@@H_874_77@

      大佬总结

      以上是大佬教程为你收集整理的集合的hashCode方法的最佳实现全部内容,希望文章能够帮你解决集合的hashCode方法的最佳实现所遇到的程序开发问题。

      如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

      本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
      如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: