可以储存对象的类HashMap(集合) |
| 作者:佚名 来源:不详 更新:2007-1-13 20:36:26 错误报告 我要投稿 |
最近在做flash,觉得flash里没有像java那样有个可以存取对象的类,很不方便 所以自己花了点时间写了个HashMap的类.有兴趣的人可以研究一下.很简单. 基本功能都写了,当然要扩展还是可以的.下面是HashMap.as类
//************************************************************************ //author:弃天笑 //E-mail:sujun10@21cn.com @2006年8月10号 //功能描述: //根据key,value存取对象.类似与java的HashMap类的功能,用法大概相似 ////************************************************************************ class HashMap { private var ListArray:Array private var empty:Boolean; public function HashMap() { ListArray = new Array(); } //存储一个新的对象 public function put(key:String, value:Object):Void { var object:Object = new Object(); object.key = key; object.value = value; ListArray.push(object); } //获取储存里的对象 public function get(key:String):Object { for(var i = 0; i < ListArray.length; i++) { if(ListArray[i].key == key) { return ListArray[i].value; } } return new Object("没有当前对象"); } //判断集合是否为空 public function isEmpty():Boolean { if( ListArray.length == 0) { return empty = true; } return empty = false; } //清除集合中的所有元素 public function clear():Void { while(ListArray.length >= 0) { ListArray.pop(); } } //集合的长度 public function size():Number { return ListArray.length; } //删除当前对象 public function remove(key:String):Object { var tempObject:Object; var num:Number; for(var i = 0; i < ListArray.length; i++) { if(ListArray[i].key = key) { tempObject = ListArray[i].value; num = i; break; } } for(var i = num; i <= ListArray.length; i++) { var temp:Object = ListArray[i + 1].value; ListArray[i + 1].value = ListArray[i].value; } ListArray.pop(); return tempObject; } }
下面是测试代码: var map:HashMap = new HashMap(); var mc:Object = new Object(); mc.key = "soda"; var mcc:Object = new Object(); mcc.key = "sodar";
map.put("mc",mc); map.put("mcc",mcc); //map.clear(); var m:Object = map.get("mc"); trace("mc:" + m.key); //map.remove("mmc") trace("mcc:" + map.get("mcc").key); trace("测试存放数组"); var list:Array = new Array(); list.push("soda"); list.push("sodar"); map.put("list",list); var ls:Object = map.get("list"); for(var i = 0; i < ls.length; i++) { trace(ls[i]); }
在flash 8 测试通过
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |