点击领取优惠~
251 字
1 分钟
解决哈希冲突有哪些方法呢?
解决哈希冲突有哪些方法呢?
我们到现在已经知道,HashMap 使用链表的原因为了处理哈希冲突,这种方法就是所谓的:
- 链地址法:在冲突的位置拉一个链表,把冲突的元素放进去。
除此之外,还有一些常见的解决冲突的办法:
- 开放定址法:开放定址法就是从冲突的位置再接着往下找,给冲突元素找个空位。找到空闲位置的方法也有很多种:
- 线行探查法: 从冲突的位置开始,依次判断下一个位置是否空闲,直至找到空闲位置
- 平方探查法: 从冲突的位置 x 开始,第一次增加1^2个位置,第二次增加2^2…,直至找到空闲的位置
- ……

- 再哈希法:换种哈希函数,重新计算冲突元素的地址。
- 建立公共溢出区:再建一个数组,把冲突的元素放进去。
解决哈希冲突有哪些方法呢?