|散列表的一些应用场景

|散列表的一些应用场景

文章图片

|散列表的一些应用场景

文章图片


1、引言
上节我们学习了散列表的定义 , 并用代码演示了散列表的实现 。 众所周知 , 散列表的用途广泛 , 那么今天学习散列表的具体应用都有哪些 , 今天给出三个应用实例供大家参考 。
2、应用案例
l散列表用于查找
我们手机上都有基本的通讯功能 , 有通讯功能必然存在一个通讯录的东西 , 一般情况下 ,
我们的通讯录都是单人单号 , 但有时因为特殊原因 , 有人有多个号码 , 但是也加了区分的限定 , 在此我们只研究单人单号的情况 。

通讯录
假设我们需要创建一个类似于上图的通讯录 , 输入姓名就能映射出电话号码 , 那我们通讯就会很方便 。 这非常适合使用散列表的数据结构来实现 , 首先我们先创建映射 , 再实现查找 。
下面是一段C#代码(Java类似于Map用法)

static voidMain(string[
args)
{
//定义通讯录字典
Dictionary<stringstring> dics =new Dictionary<stringstring>();
//添加通讯数据
dics.Add(\"Bob\"\"1238292311123\");
dics.Add(\"Cob\"\"1238292311123\");
dics.Add(\"Dob\"\"1238292311123\");
dics.Add(\"Eob\"\"1238292311123\");
dics.Add(\"Fob\"\"1238292311123\");
//循环赋值
foreach(varitemindics)
{
Console.WriteLine(\"嘿 , siri帮我查询一下\"+ item.Key +\"的电话 。 \");
Console.WriteLine(\"正在查询 , 请稍候:\");
Console.WriteLine(item.Key +\"的电话为\"+ item.Value);
Console.WriteLine(\"请按任意键继续查询~\");
Console.ReadLine();

Console.ReadKey();

输出结果为:
【|散列表的一些应用场景】
运行结果
是不是查的又准又快~
l投票——防止重复投票
如果我们负责一个投票的事务 , 规定每人只能投一票 , 但如何避免重复投票 , 显然散列表满足这种唯一映射 。 那么我们应该怎么实现这一过程呢 , 下面再给你写一段代码:
static voidMain(string[
  args)
{
//定义一个投票人字典
Dictionary<stringbool> dicVotes =new Dictionary<stringbool>();
dicVotes.Add(\"tom\"true);
dicVotes.Add(\"som\"true);
dicVotes.Add(\"rom\"true);
//一直循环
while(true)
{
Console.WriteLine(\"请输入姓名进行投票:\");
//接收用户 输入
stringinput =Console.ReadLine();
foreach(varitemindicVotes)
{
if(input.Equals(item.Key))
{
Console.WriteLine(\"您已投过票了 , 滚出去~\");
break;

else
{
Console.WriteLine(\"投票成功~\");
break;





运行结果
从运行结果上来看 , 如果tom在散列表中 , 对比用户输入存在就返回已投票 , 当输入“yh”时 , 散列表中并不存在这么一个人 , 显示投票成功 , 最完美的情况 , 就是应该再将这个人加入散列表中 , 在程序中我没有写 , 如果你看到这里会写的话请把那句代码和位置发到留言处 , 说明你也认真看并且思考了 。 由此看出 , 使用散列表用来检查重复 , 速度非常快 。
l缓存
缓存对于非计算机专业的学生来说 , 这个术语有点相对陌生 , 但几乎每个app和浏览器都附带一个功能叫做清除缓存 , 那么为什么会存在缓存这么一个东西?它的意义在哪里?
假设我们登录网站看到网站首页时是这么一个实现过程 , 我们在未登录状态时 , 网页拦截器会检测到我们的状态 , 自动映射到登录页 , 但我们输入账户密码后 , 点击登录按钮触发验证 , 网页会将账户密码发送到后台 , 从数据库查询这个账户是否存在 , 存在会将账户信息和token(一种状态验证码)存到浏览器缓存中去 , 并将网站首页展示给用户 。 当用户第二次访问网站时 , 当token不过期的情况下 , 用户无需登录 , 即可看到网站首页 。 那么我们有的时候会发现网页展示非常的缓慢 , 你可能会吐槽这个网站的服务器怎么会那么垃圾 , 殊不知服务器已经很努力的进行工作 , 它服务的可能是全国几亿用户 , 那么怎么加快这种展示速度呢 。 那就是合理利用缓存 , 对于用户经常访问的网页 , 服务器可以将这些页面url和数据存到浏览器缓存中 , 当用户请求这个url时就映射出这个网页 。 从而显得又快又好 。 这就是为什么有的时候不用联网也能看到网站页面的时候 , 其实是服务器已经给你把页面装载到缓存中 。
缓存一般有如下两个优点
1、用户能够更快地看到网页
2、网站做的工作量会大大减少 , 服务器压力会减小
当用户点击查看网页时 , 浏览器会检查自身缓存有没有这些url和数据 , 如果没有的情况下才会向服务器发起请求 , 再把这些数据存入缓存 , 再展示给用户看 。 这样的话 , 当下次用户再次请求这个url时 , 可以直接利用缓存数据 , 而不用再向服务器发起请求 。

注意左下角文字


    推荐阅读