一、Hash冲突的定义

Hash冲突(哈希碰撞, Hash Collision)指不同的输入值通过哈希函数计算后得到相同的哈希地址的现象。
核心原因:
- 哈希函数将无限或大范围的输入数据映射到有限长度的输出空间(如32位哈希值仅有42.9亿种可能),必然存在不同输入对应相同输出的情况。
二、Hash冲突的解决方法
1. 开放定址法(Open Addressing)
该方法也叫做再散列法,其基本原理是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi 。
- 原理:当冲突发生时,按照探测序列在哈希表中寻找
下一个可用空位。 - 实现形式:
IdentityHashMap(JDK 1.4+):基于System.identityHashCode()计算哈希值,而非hashCode()。Object2ObjectOpenHashMap(FastUtil):冲突时通过二次函数(如H(key) + i²)寻找空位,减少聚集效应。直接存储键值对数组,无链表节点开销(内存占用比JDK实现低30%)UnifiedMap( Eclipse Collections):冲突时使用第二个哈希函数生成动态步长,降低冲突概率。

最低0.47元/天 解锁文章
1256

被折叠的 条评论
为什么被折叠?



