为什么在java的set集合中 hashcode相同 但equals结果可能为false

 我来答
其其英贡风
2019-08-03 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:32%
帮助的人:673万
展开全部
如果重写了hashcode()和equals()方法后还出现了哈希值相同,equals不相同的情况,可能是发什么了哈希碰撞,导致不同的对象处于同一个内存空间,通过equals比较值就会出现false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
厚瑶慈画
2019-07-03 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:27%
帮助的人:770万
展开全部
hashcode()和equals(object
o)方法是java所有类的基类object类中的方法,所有类都继承了object类以及其中的方法。equals与hashcode的定义必须一致,即:如果x.equals(y)返回true,那么x.hashcode()就必须与y.hashcode()具有相同的值。当然,对于两个不同的对象,x.hashcode()与y.hashcode()基本不会相同(不排除极少数情况会相同)。
在基类object类中,默认的equals方法是判断两个对象是否具有相同的引用,如果具有相同的引用,那它们必然是相等的。不过这种判断方法并不是一直都通用,比如:有的时候,两辆汽车,只要型号配置相同,就可以认为是相等的,出厂日期可以忽略不计。这种时候就需要在你的类中重写equals方法,对于这个类用你自己的方法来判断两个对象是否相等(重写equals方法就必须重新定义hashcode()方法)。
注:如果对两个对象进行==操作,那么就会自动调用object类默认的equals方法来进行比较。希望能帮到你~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式