flex 自定义HashMap类(转)

文件如下: 两个文件接口类Map 和实现类 HashMap
/FlexAppToJava/flex_src/util/map/HashMap.as
package util.map 
{ 

/** 
* @(#)HashMap.as 
* 
* @author soda E-mail:junaisy@163.com 
* @version 1.0 
* <br>Copyright (C), 2007 soda.C 
* <br>This program is protected by copyright laws. 
* <br>Program Name:FlashSyncServer 
* <br>Date:2006.6 
*/ 


/** 
* <p>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值</p> 
* <p>它的实现类有以下的类:</p> 
* @author soda(弃天笑) 
*/ 

public class HashMap implements Map 
{ 
private var obj:Object; 
private var len:Number; 

//	 public function HashMap() 
//	 { 
//	 obj=new Object(); 
//	 len=0; 
//	 } 

//new HashMap([{key:,value:},{key:,value:}]) 
public function HashMap(array:Array = null) 
{ 
if(array==null || array.length==0){ 
obj=new Object(); 
len=0; 
}else{ 

obj=new Object(); 
len=0; 

for(var i:int=0;i<array.length;i++){ 
var o:Object = array[i]; 
obj[o.key] = o.value; 
len++; 
} 
} 
} 

/** 
* 将指定的值与此映射中的指定键相关联. 
* @param key 与指定值相关联的键. 
* @param value 与指定键相关联的值. 
*/ 
public function put(key:String, value:Object):void 
{ 
var temp=obj[key]; 
if (temp == undefined) 
{ 
if (temp == undefined) 
{ 
obj[key]=value; 
len++; 
} 
}else{ 
obj[key]=value; 

} 
} 

/** 
* 返回此映射中映射到指定键的值. 
* @param key 与指定值相关联的键. 
* @return 此映射中映射到指定值的键,如果此映射不包含该键的映射关系,则返回 null. 
*/ 
public function getByKey(key:String):Object 
{ 
return obj[key]; 
} 

/** 
* 从此映射中移除所有映射关系 
*/ 
public function clear():void 
{ 
for (var temp:String in obj) 
{ 
delete obj[temp]; 
} 
len=0; 
} 


/** 
* 如果存在此键的映射关系,则将其从映射中移除 
* @param key 从映射中移除其映射关系的键 
* @return 以前与指定键相关联的值,如果没有该键的映射关系,则返回 null 
*/ 
public function remove(key:String):Object 
{ 
var temp=obj[key]; 
if (temp != undefined) 
{ 
delete obj[key]; 
len--; 
} 
return temp; 
} 

/** 
* 返回此映射中的键-值映射关系数. 
* @return 此映射中的键-值映射关系的个数. 
*/ 
public function size():Number 
{ 
return len; 
} 

/** 
* 如果此映射未包含键-值映射关系,则返回 true. 
* @return 如果此映射未包含键-值映射关系,则返回 true. 
*/ 
public function isEmpty():Boolean 
{ 
if (len != 0) 
{ 
return true; 
} 
return false; 
} 

/** 
* 如果此映射包含指定键的映射关系,则返回 true. 
* @param key 测试在此映射中是否存在的键. 
* @return 如果此映射包含指定键的映射关系,则返回 true. 
*/ 
public function containsKey(key:String):Boolean 
{ 
var temp=obj[key]; 
if (temp != undefined) 
{ 
return true; 
} 
return false; 
} 

/** 
* 如果该映射将一个或多个键映射到指定值,则返回 true. 
* @param key 测试在该映射中是否存在的值 
* @return 如果该映射将一个或多个键映射到指定值,则返回 true. 
*/ 
public function containsValue(value:Object):Boolean 
{ 
for (var temp:String in obj) 
{ 
if (obj[temp] == value) 
{ 
return true; 
} 
} 
return false; 
} 

/** 
* 返回此映射中包含的所有值. 
* @param key 从映射中移除其映射关系的键 
* @return 以前与指定键相关联的值,如果没有该键的映射关系,则返回 null 
*/ 
public function values():Array 
{ 
var ary:Array=new Array; 
for (var temp:String in obj) 
{ 
ary.push(obj[temp]); 
} 
return ary; 
} 

public function keys():Array 
{ 
var ary:Array=new Array; 
for (var temp:String in obj) 
{ 
ary.push(temp); 
} 
return ary; 
} 

} 
/** 
最后附上测试代码: 

import mx.soda.util.Map; 
import mx.soda.util.HashMap; 
var map:Map = new HashMap(); 
var obj = {}; 
obj.name = “soda”; 
obj.age = 23; 
map.put(”obj”,obj); 

var obj 1= {}; 
obj1.name = “弃天笑”; 
obj.age = 23; 
map.put(”obj1″,obj1); 
trace(map.get(”obj”).age) 

trace(map.get(”obj1″).age) 

*/ 
}


/FlexAppToJava/flex_src/util/map/Map.as
package util.map 
{ 

/** 
* @(#)Map.as 
* 
* @author soda E-mail:junaisy@163.com 
* @version 1.0 
* <br>Copyright (C), 2007 soda.C 
* <br>This program is protected by copyright laws. 
* <br>Date:2006.6 
* 
* <p>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值</p> 
* <p>它的实现类有以下的类:</p> 
* @see HashMap 
* @author soda(弃天笑) 
*/ 

public interface Map 
{ 
/** 
* 将指定的值与此映射中的指定键相关联. 
* @param key 与指定值相关联的键. 
* @param value 与指定键相关联的值. 
*/ 
function put(key:String, value:Object):void; 

/** 
* 返回此映射中映射到指定键的值. 
* @param key 与指定值相关联的键. 
* @return 此映射中映射到指定值的键,如果此映射不包含该键的映射关系,则返回 null. 
*/ 
function getByKey(key:String):Object; 

/** 
* 从此映射中移除所有映射关系 
*/ 
function clear():void; 

/** 
* 如果存在此键的映射关系,则将其从映射中移除 
* @param key 从映射中移除其映射关系的键 
* @return 以前与指定键相关联的值,如果没有该键的映射关系,则返回 null 
*/ 
function remove(key:String):Object; 

/** 
* 返回此映射中的键-值映射关系数. 
* @return 此映射中的键-值映射关系的个数. 
*/ 
function size():Number; 

/** 
* 如果此映射未包含键-值映射关系,则返回 true. 
* @return 如果此映射未包含键-值映射关系,则返回 true. 
*/ 
function isEmpty():Boolean; 

/** 
* 如果此映射包含指定键的映射关系,则返回 true. 
* @param key 测试在此映射中是否存在的键. 
* @return 如果此映射包含指定键的映射关系,则返回 true. 
*/ 
function containsKey(key:String):Boolean; 

/** 
* 如果该映射将一个或多个键映射到指定值,则返回 true. 
* @param key 测试在该映射中是否存在的值 
* @return 如果该映射将一个或多个键映射到指定值,则返回 true. 
*/ 
function containsValue(value:Object):Boolean; 

/** 
* 返回此映射中包含的所有值. 
* @param key 从映射中移除其映射关系的键 
* @return 以前与指定键相关联的值,如果没有该键的映射关系,则返回 null 
*/ 
function values():Array; 
} 


}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值