Dictionary字典类关联数组
Dictionary的遍历
使用 for..in 循环或 for each..in 循环来遍历 Dictionary 对象的内容。
1.for..in 循环用于基于键进行遍历;
2.for each..in 循环用于基于与每个键关联的值进行遍历,使用 for each..in 循环可以直接访问 Dictionary 对象的值。
for (var key:Object in groupMap) { trace(key, groupMap[key]); } for each (var item:Object in groupMap) { trace(item); }
/*
output
[object Sprite] [object Object]
[object Sprite] [object Object]
[object Sprite] [object Object]
[object Object]
[object Object]
[object Object]
*/
groupMap初始化:
var groupMap:Dictionary = new Dictionary();
// objects to use as keys var spr1:Sprite = new Sprite(); var spr2:Sprite = new Sprite(); var spr3:Sprite = new Sprite(); // objects to use as values var groupA:Object = new Object(); var groupB:Object = new Object(); // Create new key-value pairs in dictionary. groupMap[spr1] = groupA; groupMap[spr2] = groupB; groupMap[spr3] = groupB; if (groupMap[spr1] == groupA) { trace("spr1 is in groupA"); } if (groupMap[spr2] == groupB) { trace("spr2 is in groupB"); } if (groupMap[spr3] == groupB) { trace("spr3 is in groupB"); }
对象键和内存管理
var myObject:Object = new Object(); var myMap:Dictionary = new Dictionary(); myMap[myObject] = "foo";
利用myObject作为键时,会复制一个myObject引用,两个引用同时指向同一个对象。
若要使 myObject 引用的对象能够进行垃圾回收,您必须删除对它的所有引用。在此情况下,必须更改 myObject 的值并从myMap 中删除 myObject 键,如以下代码所示:
myObject = null; delete myMap[myObject];
或者可以使用 Dictionary 构造函数的 useWeakReference 参数,以使所有字典键均成为“ 弱引用”。
var myMap:Dictionary = new Dictionary(true);