//散列
//类似于 对象存储,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