js实现自定义数据结构Map

虽然起名叫HashMap,但是请不要误解,跟hash没啥关系哈(尴尬笑)

以下为代码部分并没有公开完整代码

/**
HashMap 对象,功能和用法与Java中类似, 支持序列化成字符串,用于Ajax请求
@author:sxchen
@version:1.2
@date: 2015-2-15 14:00
*/
 function HashMap(){
     /** Map 大小 **/
     var size = 0;
     /** Core Object **/
     var entry = new Object();
     /**
      *  存对象
      */
     this.put = function (key , value){
         var message = "";
         if(!this.isValidKey(key)){
             message = "is invalid key";
         }else{
               if(!this.containsKey(key)){
                     size ++ ;
                     entry[key] = value;
                 }else{
                     message = "The key("+key+") is exsit in HashMap,please use a new key";
                 }
         }
         return message;
     };
     /** 
      * 取对象  
      */
     this.get = function (key){
         if( this.containsKey(key) ){
             return entry[key];
         }
         else{
             return null;
         }
     };     
     /** 
      * 删除
      */
     this.remove = function ( key ){
         if( delete entry[key] )
         {
             size --;
         }
     };
     /**
      * Clear HashMap
      */
     this.clear = function() {
         if(this.isEmpty()){ return ; }
          for(var prop in entry){
              delete entry[prop];
          }
          size = 0;
     };
     
     /** 
      * 所有 Value 
      * @returns Array
      */
     this.values = function (){
         var values = new Array();
         for(var prop in entry)
         {
             values.push(entry[prop]);
         }
         return values;
     };
     /** 
      * 所有 key 
      * @returns Array
      */
     this.keys = function (){
         var keys = new Array();
         for(var prop in entry)
         {
             keys.push(prop);
         }
         return keys;
     };
     
     /** 
      * Map Size 
      * @returns Number
      */
     this.size = function (){
         return size;
     };
     /**
      * @return Boolean
      */
     this.isEmpty = function(){
        return (this.size()==0); 
     };
     /**
      * 用于Ajax请求
      * @returns String
      */
     this.serialize = function(){
         if(this.isEmpty()){ return null; }
         var keys = this.keys();
         var str = "";
         for(var i in keys ){
             var key = keys[i];
             str = str+key+"="+this.get(key)+"&";
         }
         str = str.substring(0, str.length-1).toString() ;
         return str;
     };
     /**
      * equals Object
      * @returns true/false
      */
     this.equals = function(object){
         return (this == object);
     };

 }
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值