Javascript 封装 HashMap v1.1

本文介绍了一个用JavaScript实现的简单HashMap数据结构。此结构包括基本的操作如插入、获取、删除等,并支持对象作为键值。通过实例演示了如何使用自定义对象作为键。
<script language="javascript">   2 /**   3 *作者 :Fantasy   4 *Email: fantasycs@163.com   5 *QQ   : 8635335   6 *Blog : http://www.blogjava.net/fantasy   7 *版本 :V1.1    8 */   9 function HashMap()  10 {  11     /** Map 大小 **/  12     var size = 0;  13     /** 对象 **/  14     var entry = new Object();  15       16     /** 存 **/  17     this.put = function (key , value)  18     {  19         if(!this.containsKey(key))  20         {  21             size ++ ;  22         }  23         entry[key] = value;  24     }  25       26     /** 取 **/  27     this.get = function (key)  28     {  29         return this.containsKey(key) ? entry[key] : null;  30     }  31       32     /** 删除 **/  33     this.remove = function ( key )  34     {  35         ifthis.containsKey(key) && ( delete 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();  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();  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     this.clear = function ()  90     {  91         size = 0;  92         entry = new Object();  93     }  94 }  95   96 var map = new HashMap();  97   98 /*  99 map.put("A","1"); 100 map.put("B","2"); 101 map.put("A","5"); 102 map.put("C","3"); 103 map.put("A","4"); 104 */ 105  106 /* 107 alert(map.containsKey("XX")); 108 alert(map.size()); 109 alert(map.get("A")); 110 alert(map.get("XX")); 111 map.remove("A"); 112 alert(map.size()); 113 alert(map.get("A")); 114 */ 115  116 /** 同时也可以把对象作为 Key **/ 117 /* 118 var arrayKey = new Array("1","2","3","4"); 119 var arrayValue = new Array("A","B","C","D"); 120 map.put(arrayKey,arrayValue); 121 var value = map.get(arrayKey); 122 for(var i = 0 ; i < value.length ; i++) 123 { 124     //alert(value[i]); 125 } 126 */ 127 /** 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key**/ 128  129 /** 如果是自定义对象 那自己得重写 toString() 方法 否则 . 就是下面的结果 **/ 130  131 function MyObject(name) 132 { 133     this.name = name; 134 } 135  136 /** 137 function MyObject(name) 138 { 139     this.name = name; 140      141     this.toString = function () 142     { 143         return this.name; 144     } 145 } 146 **/ 147 var object1 = new MyObject("小张"); 148 var object2 = new MyObject("小名"); 149  150 map.put(object1,"小张"); 151 map.put(object2,"小名"); 152 alert(map.get(object1)); 153 alert(map.get(object2)); 154 map.remove("xxxxx"); 155 alert(map.size()); 156  157 /** 运行结果 小名 小名 size = 1 **/ 158  159 /** 如果改成复写toString()方法的对象 , 效果就完全不一样了 **/ 160  161 </script> http://www.blogjava.net/fantasy/archive/2006/05/06/44742.html
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值