iOS笔记-哈希表

什么是哈希表?

哈希表也叫散列表,是一个根据键(key)直接访问在内存存储位置的数据结构

通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这种方式加快了查找速度。而这个映射函数称作散列函数,存放记录的数组称作散列表

本质上来说是个数组,实现哈希表的两种方式:
  • 数组+链表
  • 数组+二叉树

一般数组里存放的是单一的数据,而哈希表中存放的是键值对

数据经过散列函数计算之后,放到特定的位置

entry就是键值对,只是不同的叫法

哈希冲突

数据经过散列函数计算之后,指定在同一个位置上,就是哈希冲突

处理哈希冲突
1.开放寻址法

当计算出来的位置已经有数据了,就顺着位置往后找没有数据的位置放数据

2.拉链法

在原来的entry中额外保存一个next指针,指向数组的另外一个位置放置新数据

哈希表的扩容

当哈希表被占用的位置比较多的时候,出险冲突的概率也就变高了,就会进行扩容

\color{red}{注意:}哈希表的扩容不是简单的扩大,而是新创建一个数组是原来的2倍,然后把原来数组的所有entry都重新经过新的哈希函数计算一边再存放到新的位置上

哈希表如何读取数据
  • 通过key利用哈希函数得出位置,然后去对应位置拿出数据,比较key,如果不对则根据next对比下一个位置的key
  • 开放寻址法则是按顺序去下一个位置对比

参考:一文搞定哈希表

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定义: 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说...
    耳环与珠钗阅读 2,629评论 0 1
  • 散列表(也称哈希表, Hash Table) (在这里, 哈希和散列基本可以混用)是一种根据key:value映射...
    天际神游阅读 4,524评论 0 0
  • 哈希表定义 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结...
    n油炸小朋友阅读 10,332评论 0 22
  • Hash table 也叫散列表 是根据键(key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关...
    阿飘诶阅读 734评论 0 0
  • 一、先谈谈数组与链表  经常写代码的小伙伴应该不陌生,在编程过程中常常面临着两个问题:存储和查找,存储和查找的效率...
    ITsCLG阅读 4,332评论 1 3