javascript 实现 HashMap

<script language="javascript">   

 function HashMap()  
 {  
     /** Map 大小 **/ 
     var size = 0;  
     /** 对象 **/ 
     var entry = new Object();  
       
     /** 存 **/ 
     this.put = function (key , value)  
     {  
         if(!this.containsKey(key))  
         {  
             size ++ ;  
         }  
         entry[key] = value;  
     }  
       
     /** 取 **/ 
     this.get = function (key)  
     {  
         return this.containsKey(key) ? entry[key] : null;  
     }  
       
     /** 删除 **/ 
     this.remove = function ( key )  
     {  
         if( this.containsKey(key) && ( delete entry[key] ) )  
         {  
             size --;  
         }  
     }  
       
     /** 是否包含 Key **/ 
     this.containsKey = function ( key )  
     {  
         return (key in entry);  
     }  
       
     /** 是否包含 Value **/ 
     this.containsValue = function ( value )  
     {  
         for(var prop in entry)  
         {  
             if(entry[prop] == value)  
             {  
                 return true;  
             }  
         }  
         return false;  
     }  
       
     /** 所有 Value **/ 
     this.values = function ()  
     {  
         var values = new Array();  
         for(var prop in entry)  
         {  
             values.push(entry[prop]);  
         }  
         return values;  
     }  
       
     /** 所有 Key **/ 
     this.keys = function ()  
     {  
         var keys = new Array();  
         for(var prop in entry)  
         {  
             keys.push(prop);  
         }  
         return keys;  
     }  
       
     /** Map Size **/ 
     this.size = function ()  
     {  
         return size;  
     }  
       
     /* 清空 */ 
     this.clear = function ()  
     {  
         size = 0;  
         entry = new Object();  
     }  
 }  
   
 var map = new HashMap();  
   
 /* 
 map.put("A","1"); 
 map.put("B","2"); 
 map.put("A","5"); 
 map.put("C","3"); 
 map.put("A","4"); 
 */ 
   
 /* 
 alert(map.containsKey("XX")); 
 alert(map.size()); 
 alert(map.get("A")); 
 alert(map.get("XX")); 
 map.remove("A"); 
 alert(map.size()); 
 alert(map.get("A")); 
 */ 
   
 /** 同时也可以把对象作为 Key **/ 
 /* 
 var arrayKey = new Array("1","2","3","4"); 
 var arrayValue = new Array("A","B","C","D"); 
 map.put(arrayKey,arrayValue); 
 var value = map.get(arrayKey); 
 for(var i = 0 ; i < value.length ; i++) 
 { 
     //alert(value[i]); 
 } 
 */ 
 /** 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key**/ 
   
 /** 如果是自定义对象 那自己得重写 toString() 方法 否则 . 就是下面的结果 **/ 
   
 function MyObject(name)  
 {  
     this.name = name;  
 }  
   
 /** 
 function MyObject(name) 
 { 
     this.name = name; 
      
     this.toString = function () 
     { 
         return this.name; 
     } 
 } 
 **/ 
 var object1 = new MyObject("小张");  
 var object2 = new MyObject("小名");  
   
 map.put(object1,"小张");  
 map.put(object2,"小名");  
 alert(map.get(object1));  
 alert(map.get(object2));  
 map.remove("xxxxx");  
 alert(map.size());  
   
 /** 运行结果 小名 小名 size = 1 **/ 
   
 /** 如果改成复写toString()方法的对象 , 效果就完全不一样了 **/ 
   
 </script> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值