来自帮助文档
关联数组
关联数组有时候也称为“哈希”或“映射”,它使用“键”而非数字索引来组织存储的值。关联数组中的每个键都是用于访问一个存储值的唯一字符串。关联数组为 Object 类的实例,也就是说每个键都与一个属性名称对应。关联数组是键和值对的无序集合。在代码中,不应期望关联数组的键按特定的顺序排列。
ActionScript 3.0 中引入了名为“字典”的高级关联数组。字典是 flash.utils 包中 Dictionary 类的实例,使用的键可以为任意数据类型,但通常为 Object 类的实例。换言之,字典的键不局限于 String 类型的值。
本部分说明如何创建使用字符串作为键的数组以及如何使用 Dictionary 类。
子主题
具有字符串键的关联数组
具有对象键的关联数组
具有字符串键的关联数组
在 ActionScript 3.0 中有两种创建关联数组的方法。第一种方法是使用 Object 构造函数,它的优点是可以使用对象文本初始化数组。Object 类的实例(也称作“通用对象”)在功能上等同于关联数组。通用对象的每个属性名称都用作键,提供对存储的值的访问。
以下示例创建一个名为 monitorInfo 的关联数组,并使用对象文本初始化具有两个键和值对的数组:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// 输出:Flat Panel 1600 x 1200
如果在声明数组时不需要初始化,可以使用 Object 构造函数创建数组,如下所示:
var monitorInfo:Object = new Object();
使用对象文本或 Object 类构造函数创建数组后,可以使用括号运算符 ([]) 或点运算符 (.) 在数组中添加值。以下示例将两个新值添加到 monitorArray 中:
monitorInfo["aspect ratio"] = "16:10"; // 格式错误,请勿使用空格
monitorInfo.colors = "16.7 million";
trace(monitorInfo["aspect ratio"], monitorInfo.colors);
// 输出:16:10 16.7 million
请注意,名为 aspect ratio 的键包含空格字符。也就是说,空格字符可以与括号运算符一起使用,但试图与点运算符一起使用时会生成一个错误。不建议在键名称中使用空格。
第二种关联数组创建方法是使用 Array 构造函数,然后使用括号运算符 ([]) 或点运算符 (.) 将键和值对添加到数组中。如果将关联数组声明为 Array 类型,则将无法使用对象文本初始化该数组。以下示例使用 Array 构造函数创建一个名为 monitorInfo 的关联数组,并添加一个名为 type 的键和一个名为 resolution 的键以及它们的值:
var monitorInfo:Array = new Array();
monitorInfo["type"] = "Flat Panel";
monitorInfo["resolution"] = "1600 x 1200";
trace(monitorInfo["type"], monitorInfo["resolution"]);
// 输出: Flat Panel 1600 x 1200
使用 Array 构造函数创建关联数组没有什么优势。即使使用 Array 构造函数或 Array 数据类型,也不能将 Array 类的 Array.length 属性或任何方法用于关联数组。最好将 Array 构造函数用于创建索引数组。
具有对象键的关联数组
可以使用 Dictionary 类创建使用对象而非字符串作为键的关联数组。这样的数组有时候也称作字典、哈希或映射。例如,考虑这样一个应用程序,它可根据 Sprite 对象与特定容器的关联确定 Sprite 对象的位置。可以使用 Dictionary 对象,将每个 Sprite 对象映射到一个容器。
以下代码创建三个用作 Dictionary 对象的键的 Sprite 对象实例。它为每个键分配了值 GroupA 或 GroupB。值可以是任意数据类型,但在此示例中,GroupA 和 GroupB 均为 Object 类的实例。然后,可以使用属性访问运算符 ([]) 访问与每个键关联的值,如以下代码所示:
import flash.display.Sprite;
import flash.utils.Dictionary;
var groupMap:Dictionary = new Dictionary();
// 要用作键的对象
var spr1:Sprite = new Sprite();
var spr2:Sprite = new Sprite();
var spr3:Sprite = new Sprite();
// 要用作值的对象
var groupA:Object = new Object();
var groupB:Object = new Object();
// 在字典中创建新的键-值对。
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");
}
使用对象键循环访问
可以使用 for..in 循环或 for each..in 循环来循环访问 Dictionary 对象的内容。for..in 循环用来基于键进行循环访问;而 for each..in 循环用来基于与每个键关联的值进行循环访问。
可以使用 for..in 循环直接访问 Dictionary 对象的对象键。还可以使用属性访问运算符 ([]) 访问 Dictionary 对象的值。以下代码使用前面的 groupMap 字典示例来说明如何使用 for..in 循环来循环访问 Dictionary 对象:
for (var key:Object in groupMap)
{
trace(key, groupMap[key]);
}
/* 输出:
[object Sprite] [object Object]
[object Sprite] [object Object]
[object Sprite] [object Object]
*/
可以使用 for each..in 循环直接访问 Dictionary 对象的值。以下代码也使用 groupMap 字典来说明如何使用 for each..in 循环来循环访问 Dictionary 对象:
for each (var item:Object in groupMap)
{
trace(item);
}
/* 输出:
[object Object]
[object Object]
[object Object]
*/
对象键和内存管理
Adobe Flash Player 使用垃圾回收系统来恢复不再使用的内存。当对象不具有指向它的引用时,即可对其进行垃圾回收,并会在下次执行垃圾回收系统时恢复内存。例如,以下代码创建一个新对象,并将对此对象的引用分配给变量 myObject:
var myObject:Object = new Object();
只要有对此对象的引用,垃圾回收系统就不会恢复此对象占用的内存。如果更改 myObject 的值以使其指向其它对象或将其设置为值 null,并且没有对原始对象的其它引用,则可以对原始对象占用的内存进行垃圾回收。
如果将 myObject 用作 Dictionary 对象中的键,则会创建对原始对象的另一个引用。例如,以下代码创建两个对象引用(myObject 变量和 myMap 对象中的键):
import flash.utils.Dictionary;
var myObject:Object = new Object();
var myMap:Dictionary = new Dictionary();
myMap[myObject] = "foo";
要使 myObject 引用的对象能够进行垃圾回收,您必须删除对它的所有引用。在此情况下,必须更改 myObject 的值并从 myMap 中删除 myObject 键,如以下代码所示:
myObject = null;
delete myMap[myObject];
此外,它可以使用 Dictionary 构造函数的 useWeakReference 参数,以使所有字典的键成为“弱引用”。垃圾回收系统忽略弱引用,也就是说只具有弱引用的对象可以进行垃圾回收。例如,在以下代码中,要使对象能够进行垃圾回收,您不需要从 myMap 中删除 myObject 键:
import flash.utils.Dictionary;
var myObject:Object = new Object();
var myMap:Dictionary = new Dictionary(true);
myMap[myObject] = "foo";
myObject = null; // 使对象能够进行垃圾回收。
分享到:
相关推荐
本文实例讲述了python创建关联数组(字典)的方法。分享给大家供大家参考。具体分析如下: 关联数组在python中叫字典,非常有用,下面是定义字典的两种方法 # Dictionary with quoted or variable keys d1 = {name:...
将数组转换为Dictionary 将Dictionary 转换为数组 将List转换为Dictionary 将Dictionary转换为List 首先这里定义了一个“Student”的类,它有三个自动实现属性。 class Student { public int Id { get; set; ...
读取快3倍 删除有时快5倍 具体数据量不一样,CPU和电脑不同,结果也不同。 Dictionary,加20万条,用时2371.5783毫秒 Collection,加20万条,用时1789.0249毫秒 Dictionary,读取20万条,用时2273毫秒 Collection,...
Dim d As New Dictionary Set d = CreateObject("scripting.Dictionary") d.Add "张三", "123" d.Add "李四", "456" '对象.新增 Key,Item '注意:在本地窗口中可能看不到Item条件。 'Keys方法 '返回一个数组,...
本文详细介绍了ArrayList、HashTable、List、Dictionary的用法,以及什么情况选用该数组,以便提高开发效率。希望对大家有所帮助
在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据呢?很迷茫,今天小编抽空给大家整理下这方面的内容,需要的朋友参考下吧
The Oxford Dictionary of English (ODE) is a single-volume English dictionary published by Oxford University Press, first published in 1998 as The New Oxford Dictionary of English (NODE). The word "new...
[1] and the 2015 fourth edition, re-titled Fowler's Dictionary of Modern English Usage, edited by Jeremy Butterfield, takes the same approach as the third edition (and only revised some entries)....
Dictionary对象使用方法 1.Dictionary对象的成员概要 2. 对Dictionary中增加和删除条目 3. 修改键或条目的值
单独的链哈希表一个集合,其元素为键值对,并通过单独的链接哈希表存储。 SeparateChainingHashTable共享Swift Dictionary的相同功能。
第 05 节_GEE 的数据类型(Dictionary,List,Array).pdf
apk文件 UserDictionaryProvider(电视直播视频)apk文件 UserDictionaryProvider(电视直播视频)apk文件 UserDictionaryProvider(电视直播视频)apk文件 UserDictionaryProvider(电视直播视频)apk文件 User...
Dictionary序列化源码 datatable序列化源码 文件反序列化为泛型数组 序列化泛型数组为xml文件 值得下载 源码可以运行
//应用字库类 * * $DataDict=new yfqian_Dict(); //new 一个字库对象 * * //以自定义方式索引字典库,使用该方法后,不可用于push自动插入字符串 * $DataDict->set($key,$...该结构类似 js 的 Dictionary。
Dictionary
All areas of statistics are covered, theoretical, applied, medical, etc., although, as in any dictionary, the choice of which terms to include and which to exclude is likely to reflect some aspects ...
Data Dictionary Data Dictionary Data Dictionary Data Dictionary Data Dictionary
是一个英文-缅文双解词典,Eng-Myanmar-Eng Dictionary