我从数组中找到所有选择double
那么哪种数据结构应该有效地List
或Array
来存储结果? 我希望它通过运行而不是通过内存来提高效率。
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 级,那么您需要考虑从辅助存储流式传输数据,或者一次处理单独的数据块。