跳至主要內容
哈希冲突怎么解决

下面假设hash=(x) -> x/2,hash表的长度为10,x可取5,6等,此时hash(5)=hash(6)=3,产生冲突

开放定址法

开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。

也被称为再散列法,当出现hash冲突的时候,会将上一次hash的结果和增量序列相加,然后对hash表的长度取模,进行再散列;如当3=hash(5) =hash(6)时,此时hash(6)就需要利用开放定址法解决冲突:hash(6)=(3+d)%length = p1 (d为增量序列)
其中,增量序列的获取方式有三种:


Znyoung大约 2 分钟Java集合哈希