js实现HashTable

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

时间: 2024-10-11 10:16:38

js实现HashTable的相关文章

微信开发(一):用JSAPI做微信支付+微信卡包(代金券)

做微信支付前期准备: 1,服务好开通微信支付. 2,公众账号ID:AppId. 3,公众账号密钥:AppSecret. 4,微信支付密钥:Key. 第一步:获取用户信息并跳转到需要微信支付的页面 public void ProcessRequest (HttpContext context) { var returnUrl = "http://wap.yueyangdujia.com/ActivityOrder.aspx?id="+context.Request["id&qu

js实现存储对象的数据结构hashTable和list

以下代码是typescript语言来写的,其实和es6面向对象的写法基本一致.大家阅读后都明白这些方法的作用. hash hash结构用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值. 实现该数据结构的几个方法: 函数名 说明 返回值 set(key,value) 添加项 无 del(key) 根据key删除一项 无 has(key) 是否包含某个key bool get(key) 根据key值获取value

js中数组去重的几种方法

js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                         for(var i=0;i<arr.length;i++){                                 for(var j=i+1;j<arr.length;j++){                                         if(ar

Js收藏-转

/** * <P> Title: JavaScript Util </P> * <P> Description: JavaScript 工具 </P> * <P> Modify: 2011/11/30 </P> * @author 冯万里 * @version 1.0 * * 为减少 js 关键词的占用,此文件只占用“c$”一个关键词; * 使用时用: c$.函数名(参数列表); 或者 c$().函数名(参数列表) * 字符串操作函数

js自定义对象 (转)

原文地址:https://sjolzy.cn/js-custom-object.html 29 March 2010 9:53 Monday by 小屋 javascript进阶之对象篇 一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascript中,已经存在一些标准的类,例如Date.Array.RegExp.String.Math.Number等等,这

介于js和后台之间的ajax

json格式:先是“key” 必须是 引号 后面是什么类型就怎么写 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------1---post--------- 中 的 的意思是: js要post传递的ajax文件      

js自定义类的小结

目前在Javascript中,已经存在一些标准的类,例如Date.Array.RegExp.String.Math.Number等等,这为我们编程提供了许多方便.但对于复杂的客户端程序而言,这些还远远不够. 与Java不同,Java2提供给我们的标准类很多,基本上满足了我们的编程需求,但是Javascript提供的标准类很少,许多编程需求需要我们自己去实现,例如Javascript没有哈西表Hashtable,这样的话在处理键值方面就很不方便. 因此,我个人认为一个完整的Javascript对象

JS高级-数据结构的封装

最近在看了<数据结构与算法JavaScript描述>这本书,对大学里学的数据结构做了一次复习(其实差不多忘干净了,哈哈).如果能将这些知识捡起来,融入到实际工作当中,估计编码水平将是一次质的飞跃.带着这个美好的愿望,开始学习吧O(∩_∩)O~~ 我们知道在JS中,常常用来组织数据的无非是数组和对象(这些基础就不介绍了).但在数据结构中,还有一些抽象的数据类型:列表.栈.队列.链表.字典.散列.集合.二叉树.图等,可以用来更好的对实际场景建模.当然这些数据类型,原生JS不支持,那么就需要通过封装

.Net学习笔记----2015-06-24(Hashtable 键值对集合)

Hashtable  键值对集合 有点像字典的概念,查字典时,根据拼音或者偏旁部首查找汉字 而键值对,根据键去找值  键值对对象[键] = 值 *** 键值对集合当中,键必须是唯一的,而值是可以重复的 //创建一个键值对集合对象 Hashtable ht = new Hashtable(); ht.Add(1, "张三"); ht.Add(2, true); ht.Add(3, '男'); ht.Add(false, "错误"); //在键值对集合中,是根据键去找值