数据结构之哈希表

参考:

图文并茂详解数据结构之哈希表 - 知乎 (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]中;

这里只是个示例,实际实现肯定要考虑到数据类型和内存分配等问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值