开发者社区> 问答> 正文

有关list和set的contains问题和对象的hashcode问题

screenshot
一个Foo类,在没有hashcode方法的时候,list的contain返回true set是false
在加上hashcode之后,两个都为false,这是为什么?
list的contain和set的contain是怎么判断的?

展开
收起
蛮大人123 2016-02-20 16:16:11 2414 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    因为ArrayList的存储方式相当与数组,他存储的时候不会根据hashCode去存储,但是hashSet存储到时候会根据hashCode去存储,而且hashSet在比较两个对象相等时要求除了要求两个对象满足equals返回0以外,还要求两个对象两个对象的hashCode必须相等。所以你不重写hashCode方法就会导致两个本来相等的对象因为他们hashCode不等从而返回你出现的结果。

    2019-07-17 18:45:27
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载