HashMap问题

来源:10-4 HashMap

潇歌

2022-08-14

翔仔老师好,突然想到个问题,按理说我往HashMap里面赋值,每一个元素,它应该是一个key经过hash散列计算之后找到对应的索引下标 [i] ,并放入桶中,也就是数组的数据结构。也就是说只有当出现出现哈希碰撞的时候,才会出现数组转链表,并将重复的hash值放在链表的尾部,链表长度超过8位之后,转红黑树。
我的疑惑是,在实际中,真的会有出现很多哈希碰撞的情况吗(多个hash值一致),如果这样的话,HashMap怎么做到唯一性的,并且如何保证哈希碰撞后的每一个key拿出来的值是正确的。

写回答

1回答

翔仔

2022-08-14

同学好,是否频繁冲突取决于hash算法,如果数据量一大,超过桶数,就会出现碰撞的。此外,hashmap是通过key来寻址,先按照key的hash确定是哪个桶,再拿着这个key去对应的桶里找出这个kv,所以要是存在的话肯定是能正确找出来的。

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8441 学习 · 1872 问题

查看课程