Hash冲突

链地址

普通的数组+链表

拉链法

拉链法是链地址法的一种变种,使用链表来存储冲突的键值对。当链表过长时,可以将链表转换为红黑树,从而保证查询性能。

开放定址法

它的核心思想是:当发生冲突时,通过某种策略在哈希表中寻找下一个可用的位置。

线性探测

发生冲突时依次检查下一个位置

二次探测

当发生冲突时,它会按照二次方的步长检查下一个位置,从而减少聚集问题。

双重哈希

h1(key)计算初始位置,如果发生冲突则再使用h2(key)计算步长。

再哈希法

再哈希法本身并不是直接用于解决哈希冲突的方法,而是用于动态调整哈希表大小的技术,通常用于解决哈希表负载过高或负载过低的问题。当哈希表的负载因子(已使用位置 / 总容量)超过某个阈值时,会创建一个新的更大的哈希表,并将所有元素重新哈希到新的表中。比如 HashMap 扩容就是这种方法。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计