为什么在重写equals方法时都要重写hashcoe方法
【摘要】
忘记了下边的解释原创在哪了,但是真一针见血
对象默认都是继承Object对象的。
精辟的解释
object的equals默认是比较内存地址,hashcode默认是内存地址的哈希值,如果eq...
忘记了下边的解释原创在哪了,但是真一针见血
对象默认都是继承Object对象的。
精辟的解释
object的equals默认是比较内存地址,hashcode默认是内存地址的哈希值,如果equals重写了,他为true时两个对象并不一定内存地址一样,这个时候,如果不重写hashcode,那么他会默认用object的hashcode方法,所以他们的hashcode值是不一样的。就导致两个对象equals相等但是hashcode不相等,这个对象应用在hashmap作为key时他们是先判断hashcode是否相等再比较equals,不相等就为不同的key,所以这样的对象不能应用在hashmap和set里作为key。
文章来源: englishcode.blog.csdn.net,作者:知识浅谈,版权归原作者所有,如需转载,请联系作者。
原文链接:englishcode.blog.csdn.net/article/details/120147720
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)