// 散列表  hashMap// 散列函数/**给定一个key参数,我们就能根据组成key的每个字符的ASCII码值的和得到一个数字。所以, 首先需要一个变量来存储这个总和(行{1})。然后,遍历key(行{2})并将从ASCII表中查到 的每个字符对应的ASCII值加到hash变量中(可以使用JavaScript的String类中的charCodeAt 方法——行{3})。最后,返回hash值。为了得到比较小的数值,我们会使用hash值和一个任意 数做除法的余数(mod)**/var loseloseHashCode = function (key) {var hash = 0;                          //{1}for (var i = 0; i < key.length; i++) { //{2}hash += key.charCodeAt(i);         //{3}
            }return hash % 37; //{4}
        };var djb2HashCode = function (key) {var hash = 5381; //{1}for (var i = 0; i < key.length; i++) { //{2}hash = hash * 33 + key.charCodeAt(i); //{3}
            }return hash % 1013}function HashTable() {var table = [];this.put = function (key, value) {var position = djb2HashCode(key); //{5}console.log(position + ' - ' + key); //{6}table[position] = value; //{7}
            };this.get = function (key) {return table[djb2HashCode(key)];};this.remove = function (key) {table[djb2HashCode(key)] = undefined;}this.print = function () {for (var i = 0; i < table.length; ++i) { //{1}if (table[i] !== undefined) {        //{2}console.log(i + ": " + table[i]);//{3}
                    }}};}var hash = new HashTable();hash.put('Gandalf', 'gandalf@email.com');hash.put('John', 'johnsnow@email.com');hash.put('Tyrion', 'tyrion@email.com');console.log(hash.get('Gandalf'));console.log(hash.get('Loiane'));/**有时候,一些键会有相同的散列值。不同的值在散列表中对应相同位置的时候,我们称其为冲突。例如,我们看看下面的代码会得到怎样的输出结果**/var hash = new HashTable();hash.put('Gandalf', 'gandalf@email.com');hash.put('John', 'johnsnow@email.com');hash.put('Tyrion', 'tyrion@email.com');hash.put('Aaron', 'aaron@email.com');hash.put('Donnie', 'donnie@email.com');hash.put('Ana', 'ana@email.com');hash.put('Jonathan', 'jonathan@email.com');hash.put('Jamie', 'jamie@email.com');hash.put('Sue', 'sue@email.com');hash.put('Mindy', 'mindy@email.com');hash.put('Paul', 'paul@email.com');hash.put('Nathan', 'nathan@email.com');hash.print()

转载于:https://www.cnblogs.com/vali/p/9603132.html

js数据结构hashMap -----hashMap相关推荐

  1. java中的数据结构之HashMap学习

    java中的数据结构之HashMap学习 equal与hashcode equals与hashcode的源码 为什么hashmap中作为键值的类要重写hashcode和equals方法 Integer ...

  2. HashMap/HashMap存储/HashMap扩容

    HashMap Java 集合,也称作容器,主要是由两大接口 (Interface)派生出来的:Collection 和 Map. Map集合体系: Map集合特点: (1) 键值对存储(key-va ...

  3. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-AVL树(一)

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  4. JS数据结构与算法_链表

    上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...

  5. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-哈希表

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  6. JS 数据结构之旅 :通过JS实现栈、队列、二叉树、二分搜索树、AVL树、Trie树、并查集树、堆

    JS 数据结构之旅 栈 概念 栈是一个线性结构,在计算机中是一个相当常见的数据结构. 栈的特点是只能在某一端添加或删除数据,遵循先进后出的原则 实现 每种数据结构都可以用很多种方式来实现,其实可以把栈 ...

  7. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-堆和优先队列(一)

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  8. Three.js数据结构、导入导出(.toJSON())

    Three.js数据结构.导入导出 本文是Three.js电子书的14.1节 通过Three.js模型数据导入导出过程的学习,可以让你对Threejs解析加载外部模型的过程更为了解. Threejs导 ...

  9. JS数据结构与算法 笔记

    JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...

  10. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-集合和映射

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

最新文章

  1. c c++常用算法手册(第3版_嵌入式软件开发必看书籍推荐(C/C++/linux/软件)
  2. 基于Android的校园二手商品交易平台,基于Android校园二手交易网站毕业设计论文.doc...
  3. 实现SQL Server 2012 镜像
  4. linux与mysql_Linux与MySQL
  5. 4.8 迁移数据,添加根路径
  6. Java中含有泛型的 JSON 反序列化问题
  7. 20191202_k-中心聚类算法和k-mean算法Python实现
  8. SQL Server误区30日谈-Day28-有关大容量事务日志恢复模式的误区
  9. 基于Windows Azure 搭建基于SharePoint 2010 Intranet、Extranet、Internet (2): 创建并发布SharePoint Intranet站点...
  10. ftp同步软件android,[Android ]FTP/SCP/FTPS客户端AndFTP v4.5专业版 开心版
  11. 最新喜鹊相亲交友平台微信小程序源码V2.1.2版
  12. c3p0连接池配置及实现详解
  13. ios实现读写锁,AFN的实现
  14. python 数据集中随机选择作为测试集、验证集
  15. English improvement of IT Test(2014)
  16. Web端和App端测试区别
  17. r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文
  18. 如何用QT做串口调试助手Qseriaport类的使用
  19. 深入理解java虚拟机(五)GC垃圾回收-经典垃圾收集器
  20. 主成分回归预测matlab,科学网—Matlab: princomp() 主成分分析 - 杨建功的博文

热门文章

  1. PIL 图片压缩处理
  2. 微服务架构实战篇(一):使用start.spring.io 构建SpringBoot2.0项目
  3. 【NCRE】——Winform窗体控件随窗体大小而变化
  4. c语言文件归档,Go语言tar归档文件的读写操作
  5. PHP数据处理之下载远程图片到本地
  6. Python Selenium打开谷歌浏览器
  7. 六石编程学:方便调试输出的标准C代码
  8. 2021-07-25梦笔记
  9. 同样的事情,小孩叫逆反,大人叫抬杠
  10. 培训变成了闹剧,却不想怎么改进