一个Foo类,在没有hashcode方法的时候,list的contain返回true set是false
在加上hashcode之后,两个都为false,这是为什么?
list的contain和set的contain是怎么判断的?
因为ArrayList的存储方式相当与数组,他存储的时候不会根据hashCode去存储,但是hashSet存储到时候会根据hashCode去存储,而且hashSet在比较两个对象相等时要求除了要求两个对象满足equals返回0以外,还要求两个对象两个对象的hashCode必须相等。所以你不重写hashCode方法就会导致两个本来相等的对象因为他们hashCode不等从而返回你出现的结果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。