不是说hashmap根据key找到存储索引,如果相同key的哈希值相同就替换,那不是每个索引就只能存一个值而已吗,不是都被替换的吗,怎么还能接到后面什么的,
相同key的哈希值,相同那确实替换
但是不同key的哈希值也有可能相同的
例如,key=4,key=1,哈希函数h(x)=key%3的话,两个key的哈希值就相同了,就会产生冲突,此时就会被放到后面的位置
HashMap的结构是数组➕链表➕红黑树,确实key的哈希值相同就是替换值,但是你后边说的那个索引应该是通过他的哈希值算出他应该在哪个桶,所以不冲突
索引相同不代码key相同
索引是根据key用hash算法计算出来的;
key是否相同是用key的equals方法比较出来的
会同时比较key的hash值和compare方法的,hash值相同,compare方法比较不同的,会拼接成一个链表,挂在对应的hash数组位置。
先根据哈希值确定下标,找到下标对应的数组,遍历数组比较key是否相等 查找结束