哈希表

作者: 大黑跟小白的日常 | 来源:发表于2019-01-16 12:51 被阅读0次

哈希表

大致介绍

1、哈希表的本质是一个数组;

2、数组中每一个元素称为一个箱子;

3、它通过把关键码值映射到表中一个位置(箱子的位置)来访问记录,以加快查找的速度;

4、映射函数叫做散列函数(也叫哈希函数),存放记录的数组叫做散列表,也就是哈希表;

哈希表的存储过程如下

根据 key 计算出它的哈希值 h。

假设箱子的个数为 n,那么这个键值对应该放在第(h % n)——一种散列算法)个箱子中。

如果该箱子中已经有了键值对,就使用开放寻址法或者拉链法解决(1.7及之前的HashMap)冲突。

在使用拉链法解决哈希冲突时,每个箱子其实是一个链表,属于同一个箱子的所有键值对都会排列在链表中。

以汉语字典比喻(大致,非恰当)

    假设 汉语字典一共500页,汉字共有500个发音,共有20000个字需要存储。以读音作为key,汉字作为value的话。

    那么用发音对于汉字的位置作散列的话,也算是一种hash算法吧。

    那么一页存一个音,就会有的页数字多,有的字少。把每页的字数多少就比喻成哈希冲突。

    把每页的字的顺序排列,看成一个单项链表的话,就成了hash链。

有区别在于,我们查汉字,需要针对发音找目录,查看哪个音在哪一页。而计算机是,直接计算这个音的hash值,直接告诉你在哪一页。

详细

https://www.cnblogs.com/chinajava/p/5808416.html

相关文章

  • Java数据结构_哈希表_基本概念

    本文目标 哈希表的基本概念,哈希冲突,哈希函数 什么是哈希表 哈希表也叫做散列表(hash有剁碎的意思)哈希表是空...

  • redis数据结构--字典

    Redis的字典底层就是哈希表。 哈希表 首先给出哈希表的定义: 其中可以看到,table是一个哈希表节点的数组,...

  • 哈希表和链表

    优秀文章:Chapter: 散列表(哈希表) 一、哈希表 哈希表hashtable(key,value) 就是把K...

  • 算法-哈希表算法总结

    1 哈希表模拟 思路:通过设计哈希表,模拟O(1)时间复杂度的哈希表。 2 数组作为哈希表 思路:数组就是简单的哈...

  • 数据结构 -- 哈希表及其应用

    这篇主要用来记录一下学习到的关于哈希表的知识点。 文章结构 哈希表 哈希表的定义 哈希表的优缺点 哈希碰撞 负载因...

  • 数据结构与算法(第一季):哈希表(Hash Table)

    一、哈希表(Hash Table) 1、概念 哈希表也叫做散列表。 哈希表的原理: 利用哈希函数生成key对应的i...

  • 深入理解哈希表

    深入理解哈希表 深入理解哈希表

  • 2019 算法面试相关(leetcode)--哈希表

    哈希表相关的原理可以参考下:浅谈哈希表(HashTable)深入理解哈希表哈希表的理解理解HashSet及使用 哈...

  • Redis中的字典

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

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

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

网友评论

    本文标题:哈希表

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