![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
3个回答
展开全部
一、hashCode是计算出来的,有一套计算公式。既然是公式,那么:
完全有可能输入不同的参数而得到同一个结果,所以hashCode相同不代表两个对象equal;
如果两个对象equal,即参数一致,得到的hashCode自然相等。
结论:对象equal则hashCode相等,而hashCode相等不代表对象equal。
排除:A
二、SortedSet是通过Comparator方法排序的,不是通过hashCode。
排除:B
三、对于hashCode返回值的唯一特征是满足高斯分布,这个我不是太了解,D的错我无法解答
2014-12-31 · 知道合伙人软件行家
关注
![](https://wyw-base.cdn.bcebos.com/pc-content/follow.gif)
展开全部
一般只有用到Hashtable、HashMap、HashSet、LinkedHashMap等时才要注意hashcode
在java的集合中,判断两个对象是否相等的规则是:
1),判断两个对象的hashCode是否相等
如果不相等,认为两个对象也不相等,完毕
如果相等,转入2)
(这一点只是为了提高存储效率而要求的,其实理论上没有也可以,但如果没有,实际使用时效率会大大降低,所以我们这里将其做为必需的。后面会重点讲到这个问题。)
2),判断两个对象用equals运算是否相等
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等(equals()是判断两个对象是否相等的关键)
把这个看懂了 你英语翻译能力过关的话 你就明白为什么选择CE了
在java的集合中,判断两个对象是否相等的规则是:
1),判断两个对象的hashCode是否相等
如果不相等,认为两个对象也不相等,完毕
如果相等,转入2)
(这一点只是为了提高存储效率而要求的,其实理论上没有也可以,但如果没有,实际使用时效率会大大降低,所以我们这里将其做为必需的。后面会重点讲到这个问题。)
2),判断两个对象用equals运算是否相等
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等(equals()是判断两个对象是否相等的关键)
把这个看懂了 你英语翻译能力过关的话 你就明白为什么选择CE了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询