1. 开放地址法
当出现冲突时,di是产生冲突的时候的增量序列,则将冲突的元素进行移动:
- -di值可能为1,2,3,…m-1,称线性探测再散列。如果di取1,则每次冲突之后,向后移动1个位置.
- -di取值可能为1,-1,4,-4,9,-9,16,-16,…kk,-kk(k<=m/2)称二次探测再散列。
- -di取值可能为伪随机数列。称伪随机探测再散列。
2. 多哈希法
设计多种哈希函数,可以避免冲突,但是冲突几率还是有的,函数设计的越好或越多都可以将几率降到最低。
3. 拉链法(Java中采用的)
利用一个额外的空间比如链表来保存冲突的元素,此法可以完全避免哈希函数的冲突。
4. 建立一个公共溢出区
一旦发生冲突,都填入溢出表。