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] */
var groupMap:Dictionary = new Dictionary(); // objects to use as keysvar spr1:Sprite = new Sprite();var spr2:Sprite = new Sprite();var spr3:Sprite = new Sprite();// objects to use as valuesvar 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);