`
hepeng19861212
  • 浏览: 150507 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

为什么不能(不建议)使用Array创建关联数组(哈希表)

    博客分类:
  • flex
阅读更多

 

通过学习官方API和cookbook,我总结了如下原因:

1.从API中我们了解到,Array和Object都是动态类,也就是我们可以给他们动态添加属性。

var obj:Object = new Object();
obj.prop1 = "value1";
obj.prop2 = "value2";

//例子1
var array:Array = new Array();
array.prop1 = "value1";
array.prop2 = "value2";

  但是我们再看一个数组的例子:

//例子2
var array:Array = new Array();
array[0] = "value1";
array[1] = "value2";

 这个例子和上面的那个有什么不同?array的这两种使用方法在本质上是绝对不同的。例1使用的是array对象的属性来存储值(obj亦是),而例2使用的是array的元素来存储值。也就是说,array既有obj的动态属性的特性,又有自身的元素索引的特性,所以杀鸡焉用牛刀?同时又因为array比object多出很多封装的属性和方法,flash 虚拟机创建一个Array的开销大于创建一个Object的开销。而且这些属性和方法大多不能用于操作关联数组,既然用Object就可以实现关联数组,那又何必再去使用Array呢?

 

2.根据哈希表(散列表)的定义,哈希表中的元素是无序的(不然怎么叫做“散列”表呢 ^_^),而Array中的元素是有序的,特别适合创建索引数组。因此创建哈希表的最佳方法是采用Object.

分享到:
评论

相关推荐

    js中动态创建关联数组的问题

    在JavaScript中,关联数组(也称为哈希表或字典)是一种特殊的数据结构,它允许我们使用任意类型的值(不仅仅是数字)作为键来存储和访问数据。然而,JavaScript并没有一个直接的“关联数组”类型,而是通过对象实现...

    Linux shell数组与关联数组的用法实例

    关联数组,也称为哈希表或字典,允许我们使用任意字符串作为索引来存储和检索值。在Shell中,我们需要使用`declare -A`命令来声明一个关联数组。例如: ```bash declare -A fruits_price fruits_price=([apple]=...

    用foreach来访问数组

    对于关联数组(键是字符串)来说,遍历顺序取决于哈希表的内部实现,可能与键的插入顺序不一致,因为哈希函数可能会将不同键映射到相同的桶,并形成链表。而对于索引数组(键是连续的整数),遍历顺序通常是按照键的...

    array-doubly-linked-lru.rar_动态数组_基于数组的LRU队列

    为了优化这种实现,一种常见的方法是结合哈希表和链表,如使用跳跃列表或者平衡二叉搜索树(例如红黑树)来替代数组,这样可以更好地适应数据量的变化,并提供更高效的查找和删除操作。 总的来说,这个"array-...

    关于JavaScript中的关联数组分析

    关联数组可以用作简单的哈希表,通过键来快速查找和访问数据。然而,JavaScript的对象并不保证元素的顺序,这意味着在遍历对象属性时,不能依赖于它们的创建顺序。遍历关联数组通常使用`for...in`循环: ```...

    hash.rar_HASH算法_fpga hash_hash_zebra85v_哈希表Verilog

    HASH算法_fpga hash_hash_zebra85v_哈希表Verilog”揭示了这个压缩包文件的主要内容,它涉及到哈希(Hash)算法在高速Field-Programmable Gate Array(FPGA)上的实现,以及与Zebra85v硬件平台和Verilog语言的关联。...

    数组与数据结构

    关联数组则是使用字符串作为键,类似于哈希表或字典,用于基于特定关键字查找数据。 #### 二、数组的定义 在PHP中定义数组有多种方式: 1. **直接赋值的方式声明数组**: - 直接赋值格式:`$数组变量名[索引值] ...

    php数组函数序列之array_intersect() 返回两个或多个数组的交集数组

    虽然 `array_intersect()` 在大多数情况下已经足够高效,但在极端情况下,可以考虑先对数组进行预处理,如使用 `array_unique()` 去除重复元素,或者使用哈希表(关联数组)来加速查找过程。 总之,`array_...

    JavaScript 以对象为索引的关联数组

    JavaScript中的关联数组,也称为哈希表或字典,是一种数据结构,允许您使用任何可哈希的值(包括字符串、数字甚至对象)作为数组的索引来存储和检索数据。这种灵活性使得JavaScript的对象(Object)成为实现关联数组...

    PHP开发笔记系列(九)- 数组(四)

    索引数组是通过数字索引来存储元素,而关联数组则允许使用字符串作为键来引用元素。这使得PHP在处理不同场景的数据时具有灵活性。 在PHP中,数组的操作函数丰富多样,例如`array_push()`用于在数组末尾添加元素,`...

    JAVA数组学习教程

    6. **为什么不用数组表示一切** - 虽然数组简单且高效,但它有一些限制,比如固定长度和不利于动态扩展。此外,数组不适合存储不同类型的数据,也不支持关联键和值的映射。这就是其他数据结构如链表、集合、哈希表...

    foreach遍历数组的顺序

    如果数组是关联数组(键值对),`foreach`会按照键的自然顺序进行遍历。对于数字索引的数组,遍历顺序通常是从最小索引到最大索引,也就是0到n-1。值得注意的是,PHP中的数组索引是从0开始的,因此默认的遍历顺序是...

    C#算法实现(哈希表 图 二叉树 KMP prim 最短路径 各种排序)

    哈希表在处理关联数组、缓存、查找和去重等场景中非常有效。 2. **图算法**:图是由顶点和边组成的结构,常用于表示对象之间的关系。C#中可以使用`LinkedList<T>`或自定义类来表示图。图算法包括深度优先搜索(DFS)...

    Javascript数组与字典用法分析

    字典在其他编程语言中也被称为关联数组或哈希表,但在JavaScript中,Array对象和Object对象都可以用来实现字典的功能。在数组中使用字典的特性,意味着我们可以通过字符串或其他非数字类型的索引来存储和访问数据。...

    php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比

    在功能上,`array_search()`与`in_array()`相似,但在处理关联数组时,`array_search()`会更关注键值匹配,而`in_array()`则侧重于值的匹配。在测试中,`array_search()`与`in_array()`的性能大致相同。 在实际开发...

    利用PHP实现Hash表功能_.docx

    在本文档中,我们将探讨如何使用PHP实现哈希表(Hash表)功能。哈希表是一种数据结构,它通过将键...此外,对于大规模数据,可能需要考虑动态调整数组大小或者使用更高效的哈希表实现,如PHP内置的`array`或第三方库。

    php数组去重的函数代码

    例如,可以使用`array_unique`函数对一维数组进行去重,但请注意,它并不适用于关联数组。对于关联数组,你可能需要使用`array_column`和`array_map`结合`array_unique`来实现去重。此外,还有基于哈希表的去重方法...

    AS 下实现的简单的数据结构

    AS中的对象是一种键值对的数据结构,常用于模拟关联数组或实现自定义数据结构。对象可以动态添加属性和方法。 ```as var myObject:Object = {}; myObject.key1 = "value1"; myObject.key2 = "value2"; ``` 3. 链表...

Global site tag (gtag.js) - Google Analytics