Java中重写equals方法为什么要重写hashcode方法
对象存放到HashSet或者HashMap,要先进行哈希值计算,映射到对应的数组下标,依次和这个数组下标中的元素进行equals比较。若有equals为true的,就不会将其放入集合,否则加入到该下标的链表中。
如果重写equals不重写hashCode会怎样?
因为两个内容相同的对象,它的默认HashCode值一定不一样(默认是对象的地址),那么两个内容相同的对象会存放到哈希表不同的下标中。不符合常规的逻辑,即Set中不能有内容相同的对象。
因此要保证,内容相同的对象,它的HashCode也要相
原创
2021-10-21 14:59:44 ·
72 阅读 ·
0 评论