所以自己花了点时间写了个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]);
}
//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 测试通过
