一、前言:
本章节,我们聊一下数据存储过程中,多个不同的 key 根据hash函数求出来的hash值相同的问题,即hash冲突,解决hash冲突有以下四种办法:
- 线性探索(开放寻址法):例如求出来的索引位置是i,如果当前节点有值,则尝试索引位置+1,看看节点是否为空,为空则返回当前位置,例如存入Key=A,这时根据hash函数计算出来的hash值为i+1,但是i+1已经因为上一个节点插入,已经有数据。作为key=A ,会不会比较郁闷,只是迟来了一会,自己的窝就被占用了。运用场景ThreadLocl。
- 链式地址方法(参考hashmap实现)运用场景hashMap;
- 再hash方法(通过多个hash函数),运用场景布隆过滤器(底层用bitMap);
- 建立公共溢出区:将hash表分为基本表和溢出表;
二、结