我希望内存中始终有大约 20,000 个复杂对象(应用程序将无限循环运行)。我正在考虑使用List<MyObject>
,然后将列表转换为Dictionary<int, MyObject>
,或者只是避免全部列出并将对象保留在字典中。我想知道,每次我需要查找对象时将列表转换为字典是否昂贵?什么会更好?是否始终将它们存储为字典?或者有列表并使用 lambda 来获取所需的对象?还是我应该考虑其他选择?
请注意,当对象检索导致出列时,我不需要队列或堆栈行为。
提前谢谢。
对列表使用 lambda 查找是 O(N),对于 20,000 个项目来说,这并非不可想象。但是,如果您知道始终需要通过已知键获取对象,则可以使用O(1)的字典 - 这与算法一样快。因此,如果有某种方法可以构建数据/应用程序,以便可以围绕某种可预测的、可重复的、唯一的键进行检索,这将最大限度地提高性能。最糟糕的事情(从性能的角度来看)是针对列表的一些复杂的查找例程,但有时这是不可避免的。
无论你在做什么,如果你需要访问List
,那么你将需要遍历它以找到你想要的任何内容。
如果您需要访问 Dictionary
,那么您可以选择使用键值立即检索您要查找的内容,或者,如果必须,您仍然可以遍历Dictionary
的Values
。
只需使用Dictionary
.