開放地址法
再hash的方法
拉鍊法
建立公共溢出區法
開放地址法:
1. 基本思想:當發生地址衝突的時候,按照某種方法繼續探測哈希表中的其他存儲單元,直到找到空位置爲止;
2. 所用公式 Hi(key) = [H(key) + di]mod m;其中i = 1、2、3.....k(k<m-1)
H(key)爲關鍵字key的直接hash地址
m爲hash表的長度
di爲再次探測時的地址增量
再hash的方法:
當發生衝突時,使用第二個、第三個、哈希函數計算地址,直到無衝突。缺點:計算時間增加
拉鍊法:
在HashMap中就是使用拉鍊法來解決hash衝突的問題的;
將hash衝突的記錄存儲在統一鏈表中
建立公共溢出區:
建立公共溢出區的基本思想是:假設哈希函數的值域是[1,m-1],則設向量HashTable[0...m-1]爲基本表,每個分量存放一個記錄,另外設向量OverTable[0...v]爲溢出表,所有關鍵字和基本表中關鍵字爲同義詞的記錄,不管它們由哈希函數得到的哈希地址是什麼,一旦發生衝突,都填入溢出表。