Unity 3d字典有多重?

时间:2015-09-18 13:20:17

标签: dictionary unity3d

每个人都告诉我列表对性能很重要,所以我想知道字典是否相同?因为字典没有固定的大小。是否还有一个固定大小的字典,就像普通数组一样?

提前致谢!

3 个答案:

答案 0 :(得分:1)

这取决于您的需求。

如果您只是以后续方式添加然后迭代列表中的项目 - 这是一个不错的选择。

如果每个项目都有一个密钥,需要通过密钥快速随机访问 - 请使用Dictionary。

在这两种情况下,您都可以指定集合的​​初始大小以减少内存分配。

答案 1 :(得分:1)

列表的性能可能很高,但这取决于您的使用情况。

如果您的用例是非常大的数据集的索引,您计划在运行时搜索元素,那么字典将使用O(1)时间复杂度进行检索(这很棒!)。

如果您计划在运行时在此处插入/删除一些数据,那就没关系。但是,如果您计划在运行时进行常量插入,那么由于散列和碰撞处理功能,您将会对性能产生影响。

如果您的用例需要大量插入,删除,迭代连续数据,那么列表将是快速的。但是如果你打算在运行时不断搜索,那么列表可能会在性能方面受到打击。

关于词典和大小:

如果您知道数据集的大小/一般范围,那么您可以从技术上考虑并相应地进行初始化。或者您可以编写自己的Dictionary和Hash Table实现。

总之:

每种数据结构都有其优点和缺点。因此,考虑一下您计划在运行时对数据执行的操作,然后相应地进行选择。

此外,保持数据结构时间和空间复杂度表总是很方便:P

答案 2 :(得分:0)

如果集合中包含不同数量的项目,您将需要使用list vs使用集合中新项目数重新创建array

使用dictionary,如果你有一个key并且需要查找它,那么获取集合中的特定项目会更容易一些,因此在获得一个项目时性能会更好一些该系列中的物品。

Listdictionary是System.Collections命名空间的一部分,它们是可变类型。有System.Collections.Immutable namespace,但Unity尚不支持。