`
hypgr
  • 浏览: 277757 次
社区版块
存档分类
最新评论

Flash.Util.Dictionary

阅读更多
  • 首先来点预备知识

关联数组:也称为"哈希"或"映射"。首先,他是一个数组(废话?: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(字典):

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类

    android.util.Base64类

    org.apache.commons.net.util.jar

    org.apache.commons.net.util.jar

    org.jasig.cas.client.util.CommonUtils

    予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.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

    YAHOO.util.Dom.rar_YAHOO.util_YAHOO.util.Dom.chm_yahoo.util同步

    《YAHOO.util.Dom:构建高效前端UI的基石》 在Web开发中,JavaScript库扮演着重要的角色,其中Yahoo!的YUI(Yahoo! User Interface Library)是一个强大的工具集,尤其在DOM操作方面表现卓越。YAHOO.util.Dom是YUI...

    net.mindview.util包

    5. **使用JAR文件**:要在项目中使用`net.mindview.util.jar`,你需要确保它在项目的类路径(ClassPath)中。在IDE如Eclipse或IntelliJ IDEA中,可以通过设置项目配置来添加外部JAR。在命令行环境中,可以在运行Java...

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    java并发工具包 java.util.concurrent中文版用户指南pdf

    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

    org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar

    java.util.Date与java.sql.Date相互转换

    ### Java.util.Date与Java.sql.Date相互转换 #### 知识点概述 在Java开发中,经常需要处理日期和时间相关的操作。Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但...

    Exception in thread “main“ java.util.InputMismatchException.pdf

    在Java编程语言中,`java.util.InputMismatchException`是一个常见的运行时异常,它通常发生在尝试从数据源(如控制台、文件或数据库)读取数据时,遇到的数据类型与预期的不匹配。在这个特定的场景中,问题出在主线...

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx

    ### 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#)

    net.mindview.util包(Thinking in Java 4#)

    java.util.ConcurrentModificationException 异常问题详解1

    Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...

    java.util.Date到Json日期

    ### Java.util.Date到JSON日期转换详解 在Java中处理日期并将其转换为JSON格式是常见的需求,尤其是在进行网络传输或存储操作时。本篇文章将详细介绍如何将`java.util.Date`对象转换为符合特定格式的JSON字符串,...

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    "java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError" 是一个典型的错误提示,它表明在并发执行过程中遇到了内存不足的问题。下面我们将深入探讨这个问题的原因、影响以及如何解决。 内存溢出...

    axis2.jar 解决 org.apache.axis2.util.JavaUtils.callStackToString问题

    <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

    "keyevent.util.zip"这个文件提供了一种JavaScript的解决方案,用于在Web应用程序中识别和处理来自不同平台(如联通IPTV和广电DVB)的遥控器输入。下面将详细介绍这个知识点及其相关技术。 1. **JavaScript事件处理...

    java.util包

    Java提供日期(Data)类、日历(Calendar)类,随机数(Random)类,堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构

Global site tag (gtag.js) - Google Analytics