1、開放地址法
所謂的開放定址法就是一旦發生了沖突,就去尋找下一個空的散列地址,只要散列表足夠大,空的散列地址總能找到,並將記錄存入。
公式為:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1)
2、再hash法
再哈希法又叫雙哈希法,有多個不同的Hash函數,當發生沖突時,使用第二個,第三個,….,等哈希函數
計算地址,直到無沖突。雖然不易發生聚集,但是增加了計算時間。
3、拉鏈法(也叫鏈地址法)
Java中HashMap的實現就是用這種方法解決沖突的。也就是發生沖突后,以鏈表的形式進行追加元素
拉鏈法的基本思想是:每個哈希表節點都有一個next指針,多個哈希表節點可以用next指針構成一個單向鏈表,被分配到同一個索引上的多個節點可以用這個單向鏈表連接起來
4、建立公共益處區
這種方法的基本思想是:將哈希表分為基本表和溢出表兩部分,凡是和基本表發生沖突的元素,一律填入溢出表
更多可參考:https://www.cnblogs.com/lyfstorm/p/11044468.html