关联数组:也称为"哈希"或"映射"。首先,他是一个数组(废话?:P)。但他不同于一般的数组,它使用"键"而非数字索引来组织存储的值。如同一般数组中每一个数字索引对应一个值一样,关联数组中的每个键都对应一个存储值。关联数组是 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]);
}
可以使用 for each..in 循环直接访问 Dictionary 对象的值。以下代码也使用 groupMap 字典来说明如何使用 for each..in 循环来循环访问 Dictionary 对象:
for each (var item:Object in groupMap)
{
trace(item);
}
从 myMap 中删除 myObject 键:
delete myMap[myObject];
分享到:
相关推荐
android.util.Base64类
org.apache.commons.net.util.jar
予org.jasig.cas.client.util.CommonUtils 加入 public static void disableSSLVerification(){ try { // Create a trust manager that does not validate certificate chains TrustManager[] ...
### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....
《YAHOO.util.Dom:构建高效前端UI的基石》 在Web开发中,JavaScript库扮演着重要的角色,其中Yahoo!的YUI(Yahoo! User Interface Library)是一个强大的工具集,尤其在DOM操作方面表现卓越。YAHOO.util.Dom是YUI...
5. **使用JAR文件**:要在项目中使用`net.mindview.util.jar`,你需要确保它在项目的类路径(ClassPath)中。在IDE如Eclipse或IntelliJ IDEA中,可以通过设置项目配置来添加外部JAR。在命令行环境中,可以在运行Java...
标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...
1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...
org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar
### Java.util.Date与Java.sql.Date相互转换 #### 知识点概述 在Java开发中,经常需要处理日期和时间相关的操作。Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但...
在Java编程语言中,`java.util.InputMismatchException`是一个常见的运行时异常,它通常发生在尝试从数据源(如控制台、文件或数据库)读取数据时,遇到的数据类型与预期的不匹配。在这个特定的场景中,问题出在主线...
### Java.util.Date与Java.sql.Date互转及字符串转换为日期时间格式 #### 一、Java.util.Date与Java.sql.Date的基本概念 在Java编程语言中,处理日期和时间时经常使用到`java.util.Date`和`java.sql.Date`这两个类...
net.mindview.util包(Thinking in Java 4#)
Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...
### Java.util.Date到JSON日期转换详解 在Java中处理日期并将其转换为JSON格式是常见的需求,尤其是在进行网络传输或存储操作时。本篇文章将详细介绍如何将`java.util.Date`对象转换为符合特定格式的JSON字符串,...
"java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError" 是一个典型的错误提示,它表明在并发执行过程中遇到了内存不足的问题。下面我们将深入探讨这个问题的原因、影响以及如何解决。 内存溢出...
<Call Stack = DEBUG_FRAME = org.apache.axis2.util.JavaUtils.callStackToString(JavaUtils.java:564) DEBUG_FRAME = org.apache.axis2.description.ParameterIncludeImpl.debugParameterAdd(ParameterIncludeImpl...
"keyevent.util.zip"这个文件提供了一种JavaScript的解决方案,用于在Web应用程序中识别和处理来自不同平台(如联通IPTV和广电DVB)的遥控器输入。下面将详细介绍这个知识点及其相关技术。 1. **JavaScript事件处理...
Java提供日期(Data)类、日历(Calendar)类,随机数(Random)类,堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构