gpt4 book ai didi

c# - 索引数组存储内存

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:41 24 4
gpt4 key购买 nike

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

假设有数百万条记录的列表。这些将被分析并且索引的子列表将被报告给用户。与其列出大量的索引列表,不如将其呈现出来显然更清晰;

向用户标识的行:10、21、10000-30000、700000...等。

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

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

对比

List strList = new List{"1-3000","3002","4000-5000"...};

要应用这个,我会想象创建一个列表,并在添加项目时根据需要更新/添加到列表。需要大量将字符串转换为 int,反之亦然,我认为这个过程可能不值得这样做。

如果这还不够清楚,请告诉我,我可以进一步解释。

更新

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

最佳答案

我会选择创建范围列表。根据其中的单例人数,它可能或多或少有效率:

public struct Range
{
public Range(int from, int to)
{
this.From = from;
this.To = to;
}

public int From { get; }
public int To { get; }

public static implicit operator Range(int v)
{
return new Range(v, v);
}
}

你可以这样使用它:

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

关于c# - 索引数组存储内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com