每个人都告诉我列表对性能很重要,所以我想知道字典是否相同?因为字典没有固定的大小。是否还有一个固定大小的字典,就像普通数组一样?
提前致谢!
答案 0 :(得分:1)
这取决于您的需求。
如果您只是以后续方式添加然后迭代列表中的项目 - 这是一个不错的选择。
如果每个项目都有一个密钥,需要通过密钥快速随机访问 - 请使用Dictionary。
在这两种情况下,您都可以指定集合的初始大小以减少内存分配。
答案 1 :(得分:1)
列表的性能可能很高,但这取决于您的使用情况。
如果您的用例是非常大的数据集的索引,您计划在运行时搜索元素,那么字典将使用O(1)时间复杂度进行检索(这很棒!)。
如果您计划在运行时在此处插入/删除一些数据,那就没关系。但是,如果您计划在运行时进行常量插入,那么由于散列和碰撞处理功能,您将会对性能产生影响。
如果您的用例需要大量插入,删除,迭代连续数据,那么列表将是快速的。但是如果你打算在运行时不断搜索,那么列表可能会在性能方面受到打击。
关于词典和大小:
如果您知道数据集的大小/一般范围,那么您可以从技术上考虑并相应地进行初始化。或者您可以编写自己的Dictionary和Hash Table实现。
总之:
每种数据结构都有其优点和缺点。因此,考虑一下您计划在运行时对数据执行的操作,然后相应地进行选择。
此外,保持数据结构时间和空间复杂度表总是很方便:P
答案 2 :(得分:0)
如果集合中包含不同数量的项目,您将需要使用list
vs使用集合中新项目数重新创建array
。
使用dictionary
,如果你有一个key
并且需要查找它,那么获取集合中的特定项目会更容易一些,因此在获得一个项目时性能会更好一些该系列中的物品。
List
和dictionary
是System.Collections命名空间的一部分,它们是可变类型。有System.Collections.Immutable namespace,但Unity尚不支持。