JavaScript封装的HashMap

原贴地址,封装的很不错,很OO,呵呵,跟写java的习惯一样.

1 <script language="javascript">
  2 function HashMap()
  3 {
  4     /** Map 大小 **/
  5     var size = 0;
  6     /** 对象 **/
  7     var entry = new Object();
  8     
  9     /** 存 **/
 10     this.put = function (key , value)
 11     {
 12         if(!this.containsKey(key))
 13         {
 14             size ++ ;
 15         }
 16         entry[key] = value;
 17     }
 18     
 19     /** 取 **/
 20     this.get = function (key)
 21     {
 22         ifthis.containsKey(key) )
 23         {
 24             return entry[key];
 25         }
 26         else
 27         {
 28             return null;
 29         }
 30     }
 31     
 32     /** 删除 **/
 33     this.remove = function ( key )
 34     {
 35         ifdelete entry[key] )
 36         {
 37             size --;
 38         }
 39     }
 40     
 41     /** 是否包含 Key **/
 42     this.containsKey = function ( key )
 43     {
 44         return (key in entry);
 45     }
 46     
 47     /** 是否包含 Value **/
 48     this.containsValue = function ( value )
 49     {
 50         for(var prop in entry)
 51         {
 52             if(entry[prop] == value)
 53             {
 54                 return true;
 55             }
 56         }
 57         return false;
 58     }
 59     
 60     /** 所有 Value **/
 61     this.values = function ()
 62     {
 63         var values = new Array(size);
 64         for(var prop in entry)
 65         {
 66             values.push(entry[prop]);
 67         }
 68         return values;
 69     }
 70     
 71     /** 所有 Key **/
 72     this.keys = function ()
 73     {
 74         var keys = new Array(size);
 75         for(var prop in entry)
 76         {
 77             keys.push(prop);
 78         }
 79         return keys;
 80     }
 81     
 82     /** Map Size **/
 83     this.size = function ()
 84     {
 85         return size;
 86     }
 87 }
 88 
 89 var map = new HashMap();
 90 
 91 /*
 92 map.put("A","1");
 93 map.put("B","2");
 94 map.put("A","5");
 95 map.put("C","3");
 96 map.put("A","4");
 97 */
 98 
 99 /*
100 alert(map.containsKey("XX"));
101 alert(map.size());
102 alert(map.get("A"));
103 alert(map.get("XX"));
104 map.remove("A");
105 alert(map.size());
106 alert(map.get("A"));
107 */
108 
109 /** 同时也可以把对象作为 Key **/
110 /*
111 var arrayKey = new Array("1","2","3","4");
112 var arrayValue = new Array("A","B","C","D");
113 map.put(arrayKey,arrayValue);
114 var value = map.get(arrayKey);
115 for(var i = 0 ; i < value.length ; i++)
116 {
117     //alert(value[i]);
118 }
119 */
120 /** 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key**/
121 
122 /** 如果是自定义对象 那自己得重写 toString() 方法 否则 . 就是下面的结果 **/
123 
124 function MyObject(name)
125 {
126     this.name = name;
127 }
128 
129 /**
130 function MyObject(name)
131 {
132     this.name = name;
133     
134     this.toString = function ()
135     {
136         return this.name;
137     }
138 }
139 **/
140 var object1 = new MyObject("小张");
141 var object2 = new MyObject("小名");
142 
143 map.put(object1,"小张");
144 map.put(object2,"小名");
145 alert(map.get(object1));
146 alert(map.get(object2));
147 alert(map.size());
148 
149 /** 运行结果 小名 小名 size = 1 **/
150 
151 /** 如果改成复写toString()方法的对象 , 效果就完全不一样了 **/
152 
153 </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值