我需要通过id获取东西。我决定使用矢量/数组初始化东西。所以我只使用:
array[id];
我正在通过id获取它们!但是一个问题是设置值。假设我正在插入id <1000> 的对象:
array[1000] = myobj;
显然这会返回错误。
有什么好办法可以解决这个问题?另一个数据结构?或者我应该将数组元素初始化为null(以及最好的方法是什么,禁止循环?)
我知道要插入多少元素。
答案 0 :(得分:1)
如果您提前知道“max”id值,则可以将数组分配给“max”+1,但如果您的ID很稀疏,则可能会浪费大量空间。另一种方法是使用地图数据结构。
我对动作脚本知之甚少,但看起来它有一个地图集: http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/associative-arrays.html
答案 1 :(得分:0)
Array
由两个经典数据结构Array
和HashMap
组成。当您按整数键按顺序编写对象时,Array
正在使用,HashMap
在您按String键或带有间隙的整数键(例如array[0]=1, array[2]=2
)编写对象时使用1
}将被放置到Array
,2
将被放置到HashMap
)。你的情况是2号。
您可以使用Object
类,它是带有字符串键的AS3 HashMap
实现,或Dictionary
类型为Object
的键。
我在我的项目中使用自己的数据结构ItemSet
- Array
(用于计算集合大小和对象索引)和Object
(用于按其id存储对象)的组合。 / p>