参考:
图文并茂详解数据结构之哈希表 - 知乎 (zhihu.com)
果要存储一组数据,我们都能想到使用数组或者链表来存储,但是实际生产生活中,数据都是非常庞大的,动辄几十G,几十T,甚至以P来计算。这样一来,数组和链表的优势以劣势就非常明显了。
![]()
既然这两种方法都不能完美解决实际问题,那就一定会有一种方法的诞生来处理它,我们的哈希表就这样诞生啦,哈希表集这两种存储形式的优点于一身,接下来就让我们走进哈希表吧。
哈希表简介
哈希存储是一种利用哈希表来实现的数据结构。
具体是什么样的思路呢?
我们知道,键值对就是一一对应的关系,我们根据键(一般都是字符串)去找到对应的值,不能找错。
通常,我们会将“键”输入到哈希函数中,这样就能得到一个唯一的输出,那么,我们可以怎么来好好利用这个输出的唯一性呢?在一种思路中,我们可以将键通过哈希函数映射成不会重复的序号,这些序号可以对应数组的下标,之后,就可以将“键”对应的数据“值”存放在对应下标的数组中。通过这种方式,就可以保证键和值的一一对应。
举个例子,假如我们要存储一个人的若干信息到非关系型数据库中
name:"zhangsan"
gender:"male"
age:20
存储的时候,上层调用肯定是要输入键和值两个参数,里面具体是怎么存进数据库的呢?
里面会有个哈希函数,然后另外有个专门用来存储数据的数组arr。
接下来,执行如下步骤:
name输入到哈希函数,得到一个值比如0,我们将“zhangsan”这个值放到arr[0]中;
gender输入到哈希函数,得到一个值比如2,我们将"male"这个值放到arr[2]中;
name输入到哈希函数,得到一个值比如5,我们将20这个值放到arr[5]中;
这里只是个示例,实际实现肯定要考虑到数据类型和内存分配等问题。