- 因为HashMap的长度是有限的,当插入的Entry越来越多时,再完美的Hash函数也难免会出现index冲突的情况。
a)开放地址法
这个方法的基本思想是: 当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。
这个过程可用下式描述:
Hi (key) = ( H (key)+ di ) mod m ( i = 1,2,……,k (k ≤ m – 1) )
-
其中:
H (key)
为关键字key
的直接哈希地址,m
为哈希表的长度,di
为每次再探测时的地址增量。 -
采用这种方法时,首先计算出元素的直接哈希地址
H (key)
,如果该存储单元已被其他元素占用,则继续查看地址为H (key) + d2
的存储单元,如此重复直至找到某个存储单元为空时,将关键字为key
的数据元素存放到该单元。 -
增量 d 可以有不同的取法,并根据其取法有不同的称呼:
(1) di = 1 , 2 , 3 , ……