字典实现的原理

作者: 微笑_d797 | 来源:发表于2019-01-29 11:08 被阅读51次

字典是根据hash表来映射key与value之间的存储的

取值是无须遍历数组而是将key代入到函数中得到其中的value

例如 一种简单的算法

哈希函数 f(key) = (Ord(key的第一个字母) - 97)/2

赵钱孙李 对应的key为

zhao qian sun li
26 17 19 12

在整个数组长度中他们所处的位置为

0 1 2 3 4 5 6 7 8 9 10 11 12 13
- - - - - - li - qian sun - - - zhao

那么当取值时只需要知道key 例如“zhao” 那么 f(zhao) = Ord(zhao)/2 = 13 的到13 无须进行遍历那么时间复杂度即为1 倘若多出一个相同key的值来那么需要给他一个增量例如多处一个key 为zhang f(key) = (Ord(zhang) - 97)/2 = 13 那么就需要+1 即在他的14的位置上。

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
- - - - - - li - qian sun - - - zhao zhang

上面只是一种简单的算法例如还有 MD5,SHA1,SHA256 等算法都是哈希算法

哈希函数的缺点
1.如果哈希表中本来箱子就比较多,扩容时需要重新哈希并移动数据,性能影响较大。
2.如果哈希函数设计不合理,哈希表在极端情况下会变成线性表,性能极低。

相关文章

  • 字典实现的原理

    一:NSDictionary底层其实是一个哈希表 二:哈希表,是根据关键码值(Key value)而直接进行访问的...

  • 字典实现的原理

    字典是根据hash表来映射key与value之间的存储的 取值是无须遍历数组而是将key代入到函数中得到其中的va...

  • NSDictionary实现原理

    字典原理 NSDictionary(字典)是使用hash表来实现key和value之间的映射和存储的 方法:- (...

  • python dict 实现原理

    python dict 实现原理 这篇文章描述了如何用Python语言实现字典。 字典由键索引,可以将它们视为关联...

  • NSDictionary实现原理

    字典原理 NSDictionary(字典)是使用 hash表来实现key和value之间的映射和存储的, hash...

  • iOS 字典的实现原理

    一、NSDictionary使用原理 1.NSDictionary(字典)是使用hash表来实现key和value...

  • OC的字典实现原理

    1、哈希表: 哈希:1、md5 2、哈希算法 3、SHA1 ... 可以自己写个哈希涵数,把名字 key按 26个...

  • iOS 字典的实现原理

    一、NSDictionary使用原理1.NSDictionary(字典)是使用hash表来实现key和value之...

  • KVC底层实现和应用

    一、KVC字典转模型的实现原理 假设dict字典中有name,icon的Key,CYXModel模型类中必须要有同...

  • iOS NSDictionary(字典)~实现原理

    总结:简单来说,HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的...

网友评论

    本文标题:字典实现的原理

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