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. 建立一个公共溢出区

一旦发生冲突,都填入溢出表。