js hashMap

  1 /**
  2  * MAP对象,实现MAP功能  
  3  *  
  4  * 接口:  
  5  * size()                     获取MAP元素个数  
  6  * isEmpty()                   判断MAP是否为空  
  7  * clear()                        删除MAP所有元素  
  8  * put(key, value)              向MAP中增加元素(key, value)   
  9  * remove(key)                 删除指定KEY的元素,成功返回True,失败返回False  
 10  * get(key)                       获取指定KEY的元素值VALUE,失败返回NULL  
 11  * element(index)                  获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL  
 12  * containsKey(key)             判断MAP中是否含有指定KEY的元素  
 13  * containsValue(value)          判断MAP中是否含有指定VALUE的元素  
 14  * values()                       获取MAP中所有VALUE的数组(ARRAY)  
 15  * keys()                     获取MAP中所有KEY的数组(ARRAY)  
 16  * 
 17  * 例子:  
 18  * var map = new Map();  
 19  * 
 20  * map.put("key", "value");  
 21  * var val = map.get("key")  
 22  * ……  
 23  * 
 24  */
 25 function hashmap() {
 26    /**
 27     * 存放数据
 28     */
 29    this.data = new Object();
 30    
 31    /**
 32     * 放入一个键值对
 33     * @param {String} key
 34     * @param {Object} value
 35     */
 36    this.put = function(key, value) 
 37    {
 38       this.data[key] = value;
 39    };
 40    
 41    /**
 42     * 获取某键对应的值
 43     * @param {String} key
 44     * @return {Object} value
 45     */
 46    this.get = function(key) 
 47    {
 48       return this.containsKey(key)?this.data[key]:null;  
 49    };
 50    
 51    /**
 52     * 删除一个键值对
 53     * @param {String} key
 54     */
 55    this.remove = function(key) 
 56    {
 57       delete this.data[key];
 58    };
 59    
 60    /**
 61     * 遍历Map,执行处理函数
 62     * 
 63     * @param {Function} 回调函数 function(key,value,index){..}
 64     */
 65    this.each = function(fn){
 66       if(typeof fn != 'function')
 67       {
 68          return;
 69       }
 70       var len = this.data.length;
 71       for(var i=0;i<len;i++)
 72       {
 73          var k = this.data[i];
 74          fn(k,this.data[k],i);
 75       }
 76    };
 77    
 78    /**
 79     * 获取键值数组(类似Java的entrySet())
 80     * @return 键值对象{key,value}的数组
 81     */
 82    this.entrys = function() 
 83    {
 84       var len = this.data.length;
 85       var entrys = new Array(len);
 86       for (var i = 0; i < len; i++) {
 87          entrys[i] = {
 88             key : i,
 89             value : this.data[i]
 90          };
 91       }
 92       return entrys;
 93    };
 94    
 95    /**
 96     * 判断Map是否为空
 97     */
 98    this.isEmpty = function() 
 99    {
100       return this.data.length == 0;
101    };
102    
103    /**
104     * 获取键值对数量
105     */
106    this.size = function()
107    {
108       return this.data.length;
109    };
110    
111    /**
112     * 重写toString ,装成JSON格式
113     */
114    this.toString = function()
115    {
116       var s = "[";
117       for(var i=0;i<this.data.length;i++,s+=','){
118          var k = this.data[i];
119          s += "{'id':'" + k+"','value':'"+this.data[k]+"'}";
120       }
121       s=s.substring(0, s.length-1);
122       if(s!=""){
123          s+="]";
124       }
125       return s;
126    };
127    
128    /**
129     * 输出Value的值
130     */
131    this.values = function (){
132       var _values= new Array();  
133         for(var key in this.data)
134         {  
135             _values.push(this.data[key]);  
136         }  
137         return _values;  
138    };
139    
140    /**
141     * 获取keys
142     */
143    this.keySet = function (){
144       var _keys = new Array();  
145         for(var key in this.data)
146         {  
147             _keys.push(key);  
148         }  
149         return _keys;  
150    };
151    
152    /**
153     * 判断MAP中是否含有指定KEY的元素   
154     */
155     this.containsKey = function(_key)
156     {   
157        return (_key in this.data);  
158     };   
159  
160     /** 
161      * 清空Map 
162      */  
163     this.clear = function(){  
164        this.data.length = 0;
165         this.data = new Object();
166     }; 
167 }

 

转载于:https://www.cnblogs.com/lieque/p/5519937.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值