"列表"或"数组"数据结构器用于存储数组 c# 中的选择值?



我从数组中找到所有选择double那么哪种数据结构应该有效地ListArray来存储结果? 我希望它通过运行而不是通过内存来提高效率。

double[] n = new double[]{2,1,6,5,3,8,1};  # could be n number of elements

如果我选择

数组: 我可以先声明result数组以将 pick 元素存储为n的总大小,然后在找到 pick 后我将resize它。


列表: 或者我可以使用列表,但我担心的是"每次列表已满时,列表都会添加额外的内存",因此这将是成本运行时间。

那么我应该使用list还是array因为在这里我知道result的"最大大小"是多少?

如果数据的大小会动态增加,您几乎肯定更喜欢列表而不是数组。该列表在内部使用数组,并在数组已满时自动创建一个新的、更大的数组。默认情况下,每次列表已满时,容量都会加倍,但您可以通过设置list.Capacity来自行控制。不过,在大多数情况下,默认的增长策略应该没问题。

您可以在创建列表时指定初始容量。如果您这样做,差异很小。使用您喜欢的任何东西。

您应该考虑预期的输入范围。如果您希望存储几兆字节,这可能无关紧要。如果它是千兆字节,那么开销和碎片可能会变得很重要。如果它是 TB 级,那么您需要考虑从辅助存储流式传输数据,或者一次处理单独的数据块。

最新更新