哈希表(散列)
基本介绍
- 哈希表又称之为散列表,根据关键码值(key value)直接进行访问的数据结构。
- 原理:常规的查找数据通过遍历或者是比较,为减少此类步骤的出现,发明了散列技术:
-
散列技术是在记录的存储位置和他的关键字之间建立一个确定的对应关系f,是的每一个关键字key对应一个存储位置f(可以)。
-
对应关系 f()称之为散列函数,又称为哈希函数。
-
将关键值的存储在一块连续的存储空间,这块连续的存储空间称之为散列表或者是哈希表。
-
关键字对应的记录存储位置称之为散列地址。
内存地址《---》散列函数《---》关键字 存储位置 = 散列函数(关键字)
- 特性:
- 散列技术是一种存储方法,也是一种查找方法。数据与数据之间没有逻辑关系,仅仅与关键字相关联
- 散列查找适用于解决关键字和记录一一对应的问题,对于同一个关键字对应多种情况不适应,如:根据性别查找人员不适用,根据学号查找人员使用。
- 散列表适用于定值查找,对于范围查找不适用。如:在一个班级中查找18到20岁的人不适用,适用于查找给定学号的某个人
- 散列表不具备一般数据结构的操作性质,没办法找出最值,长度,排序等
- 应用——将散列表应用于缓存.
- 如果将所有的数据都存储在数据库中,对数据库的频繁调用会增加数据库的压力。为了缓解数据库的压力,引入缓存机制。在操作层面与数据库之间建立起缓存区。常用的缓存产品Redis,Memcache。也可以自己用哈希表来写缓存,先将数据加载到内存中去。就是说数据不直接放到数据库中,而是先放到哈希表中
- 常用的哈希表结构
- 数组+链表
- 数组+二叉树