码迷,mamicode.com
首页 > Web开发 > 详细

js实现HashTable

时间:2014-05-19 21:02:13      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:c   a   get   数据   使用   set   

1.哈希表使用键值对进行的数据储存,在数据的存储位置和它的关键字之间建立一一对应的关系,从而使关键字和结构中的一个唯一的存储位置相对应,所以在检索数据时

 只需要根据这个关系便可以快速定位到要找的数据。

function HashTable(){
this._hash={};
this._count=0;
//添加或更新key
this.put=function(key,value){
if(this._hash.hasOwnProperty(key)){
this._hash[key]=value;
return true;
}
else{
this._hash[key]=value;
this._count++;
return true;
}
}
//获取key指定的值
this.get=function(key){
if(this.containsKey(key)){
return this._hash[key];
}
}
//获取元素个数
this.size=function(){
return this._count;
}
//检查是否为空
this.isEmpty=function(){
if(this._count<=0)return true;
else return false;
}
//检查是否包含指定的key
this.containsKey=function(key){
return this._hash.hasOwnProperty(key);
}
//检查是否包含指定的value
this.containsValue=function(value){
for(var strKey in this._hash){
if(this._hash[strKey]==value){
return true;
}
}
return false;
}
//删除一个key
this.remove=function(key){
delete this._hash[key];
this._count--;
}
//清除所有的key
this.clear=function(){
this._hash={};
this._count=0;
}
//从hashtable 中获取key的集合,以数组的形式返回
this.keySet=function(){
var arrKeySet = [];
var index=0;
for(var strKey in this._hash){
arrKeySet[index++]=strKey;
}
return (arrKeySet.length==0)?null:arrKeySet;
}
//从hashtable中获取value的集合,以数组的形式返回
this.valueSet=function(){
var arrValues=[];
var index=0;
for(var strKey in this._hash){
arrValues[index++]=this._hash[strKey];
}
return (arrValues.length==0)?null:arrValues;
}
}

测试案列:

var ht =new HashTable();
ht.put("key","value");
ht.put("key2","value2");
alert( ht.keySet());
alert( ht.valueSet());
alert(ht.get("key"));
ht.remove("key");
alert(ht.get("key"));
ht.clear();

js实现HashTable,布布扣,bubuko.com

js实现HashTable

标签:c   a   get   数据   使用   set   

原文地址:http://www.cnblogs.com/linsu/p/3731573.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!