`
cloud21
  • 浏览: 390127 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

ActionScript 脚本的HashMap实现

    博客分类:
  • Flex
阅读更多
定义一个接口:
package com.util
{
public interface IMap
{
      function clear():void;   
   function containsKey(key:Object):Boolean;   
   function containsValue(value:Object):Boolean;   
   function get(key:Object):Object;   
   function put(key:Object,value:Object):Object;   
   function remove(key:Object):Object;    
   function putAll(map:IMap):void;   
   function size():Number;     
   function isEmpty():Boolean;   
   function values():Array;   
   function keys():Array;
} 
}
接口类的实现
package com.util{
/**
* <p>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值</p>
* <p>它的实现类有以下的类:</p>
* @author soda(弃天笑)
*/ 
import flash.utils.Dictionary;     
public class HashMap implements IMap
{     
    private var _keys:Array = null;   
         private var props:Dictionary = null;   
                      
                  public function HashMap(){   
                          this.clear();   
                  }   
                    public function clear():void{   
                          this.props = new Dictionary();   
                          this._keys = new Array();   
                  }   
                  public function containsKey(key:Object):Boolean{   
                          return this.props[key] != null;   
                    }   
                  public function containsValue(value:Object):Boolean{   
                          var result:Boolean = false;   
                            var len:uint = this.size();   
                          if(len > 0){   
                                 for(var i:uint = 0 ; i < len ; i++){   
                                          if(this.props[this._keys[i]] == value){
                                           result=true;   
                                       }else{
                                       result=false; 
                                       }
                                  }   
                          }else{
                          result= false;   
                          }
                          return result;     
                  }   
                  public function get(key:Object):Object{   
                        return this.props[key];   
                 }   
                 public function put(key:Object,value:Object):Object{   
                         var result:Object = null;   
                        if(this.containsKey(key)){   
                                 result = this.get(key);   
                                 this.props[key] = value;   
                         }else{   
                                 this.props[key] = value;   
                                 this._keys.push(key);   
                         }   
                         return result;   
                 }   
                 public function remove(key:Object):Object{   
                         var result:Object = null;   
                         if(this.containsKey(key)){   
                                 delete this.props[key];   
                                 var index:int = this._keys.indexOf(key);   
                                 if(index > -1){   
                                         this._keys.splice(index,1);   
                                 }   
                        }   
                         return result;   
                 }   
                 public function putAll(map:IMap):void{         
                         this.clear();      
                         var len:uint = map.size();   
                         if(len > 0){   
                                 var arr:Array = map.keys();     
                                  for(var i:uint=0;i<len;i++){   
                                         this.put(arr[i],map.get(arr[i]));   
                                  }   
                          }   
                 }   
                  public function size():Number{      
                          return this._keys.length;   
                  }   
                  public function isEmpty():Boolean{
                     return this.size()<1;       
                  }   
                  public function values():Array{   
                          var result:Array = new Array();   
                          var len:Number = this.size();   
                          if(len > 0){   
                                  for(var i:Number = 0;i<len;i++){   
                                         result.push(this.props[this._keys[i]]);   
                                 }   
                          }       
                          return result;   
                  }   
                  public function keys():Array{   
                         return this._keys;   
                }  

}
}

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics