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 }