一:开放地址法
最常见的:线性探测法。
例如通过hashcode算出hash值,然后通过hash值定位到slot后,该slot已经被占用了,就往后+1,直到找到空的slot存放元素。
例如:ThreadLocal中的ThreadLocalMap就是使用了这种方案解决hash冲突。
二:拉链法
没啥好说的,Java中的HashMap就是使用这个方法,冲突的时候,将slot位置变成一个链表。
三:再哈希法
预先准备多个哈希函数,按顺序使用(都是对key使用),直到算出来的slot位置没有元素。
暂时没有发现应用的场景。
四:建立公共溢出区
正常计算slot位置,若发生冲突则将这个新来的放入公共溢出区中。