1、简介
- 通过将k经过散列函数计算后 映射到散列表(散列函数+数组+链表) ,将value存储起来,下一次取k的value值时,也是经过相同散列函数计算,即可在O(1)时间取出数据。但是会有可能不同key映射到相同位置,冲突发生,那么可以通过链表来处理冲突
散列表整合了数组和链表的优点,查找、插入、删除平均情况都是O(1)
2、散列表要素
散列函数
-
3、散列函数
好的散列函数能将自己的冲突降到最低,最好的散列函数是将数据均匀分布到数据+链表中
4、冲突解决策略
良好的散列函数
- SHA函数
较低的填装因子
可用于查找,如将网址映射成ip地址,DNS域名解析
- 可用于防止重复,如在投票中,检查是否已经投过票了,避免搜索全部记录
- 可用于缓存,例如你向facebook发送一个请求,它会首先在散列表中找这个请求url,有的话将存的页面数据给你,否则访问服务器来进行处理
