js模拟散列
//散列
//类似于 对象存储,key-value
// 存入前,先将key进行hash编码,然后存入
function HashTable(){
var hashData = [];
this.djb2HashCode = function(key){
//散列函数算法
var hash = 5381;
for(var i = 0; i < key.length; i++){
hash = hash *33 + key.charCodeAt(i);
}
return hash % 1013;
};
this.put = function(key,ele){
hashData[this.djb2HashCode(key)] = ele;
};
this.remove = function(key){
hashData[this.djb2HashCode(key)] = undefined;
};
this.print = function(){
console.log(hashData.toString());
};
} var hash = new HashTable(); hash.put("name","kite");
hash.put("age",20);
hash.print(); //解决散列的 key重复冲突有三种办法
//分离链接、线性探查和双散列法
//分离链接:使用链表 ,在key编码之后的value上面,做一个链表
//线性探查: 判断当前key是否存在元素,是则找index+1去存放当前元素,需要存放key-value
js模拟散列的更多相关文章
- shiro中自定义realm实现md5散列算法加密的模拟
shiro中自定义realm实现md5散列算法加密的模拟.首先:我这里是做了一下shiro 自定义realm散列模拟,并没有真正链接数据库,因为那样东西就更多了,相信学到shiro的人对连接数据库的一 ...
- js 实现数据结构 -- 散列(HashTable)
原文: 在Javascript 中学习数据结构与算法. 概念: HashTable 类, 也叫 HashMap 类,是 Dictionary 类的一种散列表实现方式. 散列算法的作用是尽可能快地在数据 ...
- js数据结构之hash散列的详细实现方法
hash散列中需要确定key和value的唯一确定关系. hash散列便于快速的插入删除和修改,不便于查找最大值等其他操作 以下为字符和数字的hash散列: function HashTable () ...
- 字符、散列、模拟--P1055 ISBN号码
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位是识别 ...
- javascript数据结构与算法--散列
一:javascript数据结构与算法--散列 一:什么是哈希表? 哈希表也叫散列表,是根据关键码值(key,value)而直接进行访问的数据结构,它是通过键码值映射到表中一个位置来访问记录的,散列 ...
- HashMap的实现原理--链表散列
1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. ...
- [No0000132]正确使用密码加盐散列[译]
如果你是一个 web 开发工程师,可能你已经建立了一个用户账户系统.一个用户账户系统最重要的部分是如何保护密码.用户账户数据库经常被黑,如果你的网站曾经被攻击过,你绝对必须做点什么来保护你的用户的密码 ...
- HBase Rowkey的散列与预分区设计
转自:http://www.cnblogs.com/bdifn/p/3801737.html 问题导读:1.如何防止热点?2.如何预分区?扩展:为什么会产生热点存储? HBase中,表会被划分为1.. ...
- PAT甲级 散列题_C++题解
散列 PAT (Advanced Level) Practice 散列题 目录 <算法笔记> 重点摘要 1002 A+B for Polynomials (25) 1009 Product ...
随机推荐
- Spark RDD Transformation 简单用例(二)
aggregateByKey(zeroValue)(seqOp, combOp, [numTasks]) aggregateByKey(zeroValue)(seqOp, combOp, [numTa ...
- db2 tablespaces table bufferpools reorgs
通过快照查看表空间 表 缓冲池信息 db2 get snapshot for tablespaces on teps > tablespace.infodb2 get snapshot for ...
- [No000016E]Spring 中获取 request 的几种方法,及其线程安全性分析
前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...
- Transfrom笔记
1.在不是以左上角为缩放点进行缩放时,其实比例不能为0,因为0将导致缩放可能出现动画效果不可控,务必选取0.1等较小值来变化
- 单调性 [1 + 1 / (n)]^n
def f(n): n += 0.0 s = 1 + 1 / (n) r = pow(s, n) print(n, ',', r) return r l = []for i in range(1, 1 ...
- wpf中的数据模板
wpf中的模板分为数据模板和控件模板,我们可以通过我们自己定制的数据模板来制定自己想要的数据表现形式.例如:时间的显示可以通过图片,也可以通过简单数字表现出来. 例如: (1)先在Demo这个命名空间 ...
- Chap5:操作文件和目录[The Linux Command Line]
Wildcards Wildcard Meaning * Matches any characters ? Matches any single character [characters] Matc ...
- [administrative][CentOS][NetworkManager] networkmanager (二)
[administrative][CentOS][NetworkManager] 万恶的NetworkManager到底怎么用 工程文档: https://wiki.gnome.org/Project ...
- oracle 11g/12c 密码复杂度验证设置
############################################################################### ###### 11g ###### ## ...
- quartz定时任务cron表达式详解
引用:https://www.cnblogs.com/lazyInsects/p/8075487.html cron表达式用于配置cronTrigger的实例.cron表达式实际上是由七个子表达式组成 ...