• 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();

  • 相关阅读:
    Ubuntu
    VSCode
    VSCode
    Astyle
    Qt
    待办
    Qt
    Qt
    Qt
    python pip常用命令、配置pip源
  • 原文地址:https://www.cnblogs.com/linsu/p/3731573.html
Copyright © 2020-2023  润新知