美文网首页iOS专攻
字典与哈希表(HashMap)

字典与哈希表(HashMap)

作者: han_zero | 来源:发表于2019-08-28 15:42 被阅读0次

哈希表又称散列表,是根据关键码值而直接进行访问的数据结构,即通过关键码将值映射到表中的某个位置来存储和访问,以加快查找的速度。哈希表是字典的实现原理,字典通过哈希表来存储数据,而读取的时候也是通过哈希表来获取对应的值。无论哈希表中有多少数据,增删操作的时间复杂度都为O(1),相当于无须查找,直接定位对其操作。

哈希表的存储方式是以数组为基础,每个元素是一个链表,链表上的元素的查找是根据特定的哈希算法决定的,并尽量避免哈希冲突。

如何减少和希函数产生的冲突?

  • 需要将哈希函数的返回数据在哈希表中的位置尽可能的分布均匀,避免集中在某些数组中。
  • 当冲突产生时需要更快更方便的方式来解决冲突,提供再深一级的哈希码。
  • 每组中应保持适当的链表个数,并控制出发扩容的装填因子α = 填入链表中的数据个数 / 链表的总数。装填因子一是控制扩容,二是避免哈希冲突。

哈希表解决冲突的方案:

开放定制法

三种:线性探测再散列、平方探测再散列、随机探测再散列

(表格解释:从前向后插入数据,如果插入位置已经占用,发生冲突,冲突的另起一行,计算地址,直到地址可用,后面冲突的继续向下另起一行。最终结果取最上面的数据(因为是最“占座”的数据))

avatar

链地址法

产生hash冲突后在存储数据后面加一个指针,指向后面冲突的数据
上面的例子,用链地址法则是下面这样:

avatar

没找到想要的?点击
参考HashMap 查看更多HashMap精讲

相关文章

  • 字典与哈希表(HashMap)

    哈希表又称散列表,是根据关键码值而直接进行访问的数据结构,即通过关键码将值映射到表中的某个位置来存储和访问,以加快...

  • redis源码分析(三):基本数据结构

    redis中使用的数据结构有: dict 字典,就是个哈希表,实现和HashMap类似,不做阐述;不同的是在哈希表...

  • 4.字典

    字典 1. 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,每个哈希表节点...

  • HashMap源码学习分析

    1.HashMap简介 HashMap核心是维护一张哈希表,这张哈希表是用一个Entry数组实现的。哈希表访问时,...

  • Java容器知识点总结

    一、HashMap 在了解HashMap之前,需要了解一下几个知识点: 哈希表 哈希冲突 哈希表 我们知道,数据结...

  • Java容器笔记(六):HashMap源码简单分析

    概念认识 HashMap是Map接口基于哈希表(hash table)的实现。在HashMap内部,哈希表的实现是...

  • Redis中的字典

    Redis中的字典 Redis中的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表结点,而每个哈希表结点保...

  • Redis数据结构与对象——哈希

    1 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表可以有多个哈希表节点,即每个哈希表节点就保存了字...

  • redis笔记:字典

    本人博客同步发表,排版更佳 字典实现 哈希表 哈希表节点 字典 字典类型特定函数 redis会为用途不同的字典设置...

  • 笨办法学C 练习37:哈希表

    练习36:哈希表 原文:Exercise 37: Hashmaps 译者:飞龙 哈希表(HashMap、HashT...

网友评论

    本文标题:字典与哈希表(HashMap)

    本文链接:https://www.haomeiwen.com/subject/cyqmectx.html