首页 > 其他 > 详细

两个对象值相同 (tmp1.equals(tmp2) == true) 但却可有不同的 HashCode 值,这句话有问题吗?

时间:2018-07-20 10:33:20      阅读:178      评论:0      收藏:0      [点我收藏+]

两个对象值相同 (tmp1.equals(tmp2) == true) 但却可有不同的 HashCode 值,这句话有问题吗?

答:

有问题,这句话是不对的。两个对象 tmp1 和 tmp2 满足 tmp1.equals(tmp2) == true 时它们的 HashCode 应当相同,因为 Java 对于 eqauls 方法和 hashCode 方法的规定是如果两个对象 equals 方法相等则它们的 hashCode 值一定要相同,如果两个对象的 hashCode 相同则它们的 equals 方法并不一定相同;实际中我们也可以不按照要求的原则去做,但是如果违背了上述原则就会发现在使用容器时相同的对象可以出现在 Set 集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)。

两个对象值相同 (tmp1.equals(tmp2) == true) 但却可有不同的 HashCode 值,这句话有问题吗?

原文:https://www.cnblogs.com/2220328171qq/p/9339661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!