js模拟散列
2018-06-19 17:06 muamaker 阅读(289) 评论(0) 编辑 收藏 举报//散列 //类似于 对象存储,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