索引阵列存储内存

时间:2018-04-12 15:31:58

标签: c# arrays

在讨论可能很大的列表时,是否存在用于存储索引范围的用例。

让我们说一下数百万条记录的清单。将对这些进行分析,并向用户报告索引子列表。而不是列出大量的索引列表,显然更容易呈现;

为用户识别行:10,21,100-000000,700000 ......等。

现在我可以从索引数组中明显地创建这个字符串,但我想知道以这种格式创建列表是否也会提高内存效率(而不是在内存中创建大量索引列表)。或者不值得处理开销?

列出intList = new List {1,2,3,4,5,6,7 ...};

VS

列出strList = new List {“1-3000”,“3002”,“4000-5000”......};

要应用这个,我会想象创建一个List,并在必要时添加项目更新/添加到列表中。需要相当多的将字符串转换为int,反之亦然,我认为这个过程可能不值得。

请告诉我这是否不够明确,我可以进一步解释。

更新

我非常喜欢Patrick Hofman的解决方案,使用范围列表。真正酷的是扩展它,以便.add(int)可以正确地修改范围列表。我认为这会很复杂,对不对?

1 个答案:

答案 0 :(得分:4)

我会选择创建范围列表。根据其中的单打数量,可能会有效率更高或更低:

List<Range> l = new List<Range>{ 1, 2, 3, new Range(5, 3000) };

你可以像这样使用它:

onTaskRemoved