hash碰撞解决办法

在hash碰撞的情况下,主要的处理方法有:
1.开放地址法
开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1)
基本思想:当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。
2.rehash(再hash法)
使用第二个或第三个...计算地址,知道无冲突。比如:按首字母进行hash冲突了,则按照首字母第二位,进行hash寻址。
3.链地址法(拉链法)
创建一个链表数组,数组中每一格就是一个链表。若遇到哈希冲突,则将冲突的值加到链表中即可。
java hashmap使用的就是拉链法解决hash碰撞。

hash碰撞解决办法_第1张图片
Image.jpg
hash碰撞解决办法_第2张图片
Image.png

哈希表是由链表+数组组成。
通过hash(key)%len存储到相对应的数组中,如140%16=12.意味着数组下标相同,并不表示hashCode相同。

你可能感兴趣的:(hash碰撞解决办法)