资讯专栏INFORMATION COLUMN

《JavaScript数据结构与算法》笔记——第7章 字典和散列表

zorro / 3635人阅读

摘要:在字典中,存储的是键,值,集合可以看作值,值的形式存储元素,字典也称为映射方法描述备注向字典中添加新元素通过某个键值从字典中移除对应的数据值判断某个键值是存在于这个字典中通过键值获取对应的数据值返回字典所有元素的数量删除字典中所有元素将字典

在字典中,存储的是[键,值],集合可以看作[值,值]的形式存储元素,字典也称为映射

方法 描述 备注
set(key, value) 向字典中添加新元素
delete(key) 通过某个键值从字典中移除对应的数据值
has(key) 判断某个键值是存在于这个字典中
get(key) 通过键值获取对应的数据值
size() 返回字典所有元素的数量
clear() 删除字典中所有元素
keys() 将字典包含的所有键名以数组形式返回
values() 将字典包含的所有数值以数组形式返回

散列表(hashtable)

散列算法的作用是尽可能快的在数据结构中找到一个值
散列函数的作用是给定一个键值,返回该值在表中的位置

最常见的散列函数“lose lose”

将每个键值中的每个字母的ascii值相加,然后将结果作为值在hashtable中的索引,查找的时候通过所以查找,复杂度为O(1)
此方法会在计算ascii值和时出现冲突,解决冲突的方法:分离链接,线性查探,双散列法

分离链接

在散列表的每个位置创建一个链表并将元素储存在里面,获取的时候,遍历当前位置上的链表,并比对key值,进行获取

线行探查

项表中某个位置增加新元素时,若索引为index的位置已经占了,就尝试index+1,以此类推

散列函数的性能由几个方面构成:插入和检索元素的时间,较低的冲突可能性

“djb2”散列函数

var djb2HashCode = function (key) {
    var hash = 5381;// 初始化一个hash值并赋值为一个质数(目前大多数都是用5381)
    for (var i = 0; i < key.length; i++) {
        hash = hash * 33 + key.charCodeAt(i);
    }
    return hash % 1013
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108864.html

相关文章

  • Javascript数据结构算法笔记-「字典和散列表

    摘要:我经常在业务代码中把数据处理成这种字典的数据结构获取的方法哈希表在学习了类之后,我们会学习散列表,也就是哈希表。 《Javascript数据结构和算法》笔记-「字典和散列表」 集合、字典、散列表存储的都是「不重复」的数据结构 集合:我们更关注每一个元素的值,并把其作为主要元素 字典:我们用[键,值]的形式来存储数据 散列表: 跟字典类似,也会是用[键,值]的形式来存储数据 但是「字...

    wenyiweb 评论0 收藏0
  • CSS技巧

    摘要:技巧使你的更加专业这是上关于技巧的一篇译文,另外你也可以在本项目看到原文。列举了一些很实用的技巧,比如给空内容的标签添加内容,逗号分隔列表等等。排序算法看源码,把它背下来吧排序算法的封装。主要帮助初学者更好的掌握排序算法的实现。 成为专业程序员路上用到的各种优秀资料、神器及框架 成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。 Java...

    DangoSky 评论0 收藏0
  • CSS技巧

    摘要:技巧使你的更加专业这是上关于技巧的一篇译文,另外你也可以在本项目看到原文。列举了一些很实用的技巧,比如给空内容的标签添加内容,逗号分隔列表等等。排序算法看源码,把它背下来吧排序算法的封装。主要帮助初学者更好的掌握排序算法的实现。 成为专业程序员路上用到的各种优秀资料、神器及框架 成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。 Java...

    zgbgx 评论0 收藏0
  • CSS技巧 - 收藏集 - 掘金

    摘要:笔者作为一位,将工作以来用到的各种优秀资料神器及框架整理在此,毕竟好记性不如烂键盘,此前端知识点大百科全书前端掘金,,不定期更新技巧前端掘金技巧,偶尔更新。计算数组的极值技巧使你的更加专业前端掘金一个帮你提升技巧的收藏集。 CSS 样式画各种图形 - 前端 - 掘金下面是一些我在 CSS 中经常用到的图案,还有一些是在css-tricks看到的。记录一下,以后会用到。会持续更新… 一、...

    Jonathan Shieber 评论0 收藏0
  • CSS技巧 - 收藏集 - 掘金

    摘要:笔者作为一位,将工作以来用到的各种优秀资料神器及框架整理在此,毕竟好记性不如烂键盘,此前端知识点大百科全书前端掘金,,不定期更新技巧前端掘金技巧,偶尔更新。计算数组的极值技巧使你的更加专业前端掘金一个帮你提升技巧的收藏集。 CSS 样式画各种图形 - 前端 - 掘金下面是一些我在 CSS 中经常用到的图案,还有一些是在css-tricks看到的。记录一下,以后会用到。会持续更新… 一、...

    SHERlocked93 评论0 收藏0

发表评论

0条评论

zorro

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<