/** * ********* 操做實例 ************** * var map = new HashMap(); * map.put("key1","Value1"); * map.put("key2","Value2"); * map.put("key3","Value3"); * map.put("key4","Value4"); * map.put("key5","Value5"); * alert("size:"+map.size()+" key1:"+map.get("key1")); * map.remove("key1"); * map.put("key3","newValue"); * var values = map.values(); * for(var i in values){ * document.write(i+":"+values[i]+" "); * } * document.write("<br>"); * var keySet = map.keySet(); * for(var i in keySet){ * document.write(i+":"+keySet[i]+" "); * } * alert(map.isEmpty()); */ function HashMap(){ //定義長度 var length = 0; //建立一個對象 var obj = new Object(); /** * 判斷Map是否爲空 */ this.isEmpty = function(){ return length == 0; }; /** * 判斷對象中是否包含給定Key */ this.containsKey=function(key){ return (key in obj); }; /** * 判斷對象中是否包含給定的Value */ this.containsValue=function(value){ for(var key in obj){ if(obj[key] == value){ return true; } } return false; }; /** *向map中添加數據 */ this.put=function(key,value){ if(!this.containsKey(key)){ length++; } obj[key] = value; }; /** * 根據給定的Key得到Value */ this.get=function(key){ return this.containsKey(key)?obj[key]:null; }; /** * 根據給定的Key刪除一個值 */ this.remove=function(key){ if(this.containsKey(key)&&(delete obj[key])){ length--; } }; /** * 得到Map中的全部Value */ this.values=function(){ var _values= new Array(); for(var key in obj){ _values.push(obj[key]); } return _values; }; /** * 得到Map中的全部Key */ this.keySet=function(){ var _keys = new Array(); for(var key in obj){ _keys.push(key); } return _keys; }; /** * 得到Map中的Key進行排序 */ this.keySort=function(sortType){ return this.keySet().sort(function(v1,v2){ let cal = v1-v2; let res = cal==0?0:cal>0?1:-1; return sortType==="asc"?res:-res;//默認降序 }); } /** * 得到Map的長度 */ this.size = function(){ return length; }; /** * 清空Map */ this.clear = function(){ length = 0; obj = new Object(); }; }