标签:解决方案 方法 数组下标 shm key 需要 equal value 内容
在HashMap 中 底层时候用的 数组 + 链表 + 红黑树的形式
那现在put(key,value), 他是先计算key的hash 值,通过hash 值找到数组的下标, 判断这个位置是否有对象
没有对象,则将value 放进去, 如果有对象,再去比较这两个对象之间是否相等
问题出现: 比较这两个对象相等,是调用equals 方法, 如果类里面没有覆写equals 方法, 则调用object 对象的equals 方法 即“==” 判断对象
那两个对象里面的值相同, 也会被判定成不同的对象,被追加当前链表的尾部。
结果方案:
所以需要类重写equals 方法
问题出现: 在寻找数组下标的时候,使用hashcode ,相同的对象hashcode 一定相同, 不同的对象hashcode 值可能相同,也可能不同
所以当两个内容相同对象,找对应的数组的下标的时候,就是不一样的,这样直接造成有两个内容相同的key, 因为这里key我们
要求的就是内容不同, 所以出现问题
解决方案:
需要覆写hashCode()
标签:解决方案 方法 数组下标 shm key 需要 equal value 内容
原文地址:https://www.cnblogs.com/helloqiufei/p/12876847.html