用于唯一字符串的哈希集,最多可包含数百万条记录



我正在生成数百万个唯一的字符串。为此,我使用HashSet<>。我必须定期将结果存储在文本文件中。

我注意到我的代码在以下几行花费了太多时间:

for (int i = lastEndIndex; i < storage.Count; i++)
        {
            sb.AppendLine(storage.ElementAt(i));
        }

需要lastEndIndex来存储上次保存后生成的结果。还有其他更好的机制吗?

ElementAt()必须在每次调用时从集合的开头进行迭代。这就是为什么它效率很低。

我建议另一种方法-将上次保存后生成的结果保存到列表中,并将这些结果保存到文件中,而不是从HastSet本身:

latest list:

var latest = new List<string>();
添加元素:

if(storage.Add(newElement))
{
    latest.Add(newElement);
}

保存最新文件:

foreach(var item in latest)
{
    sb.AppendLine(item);
}
latest.Clear();

相关内容

最新更新