HashSet用于最多数百万条记录的唯一字符串?

时间:2013-03-31 09:45:01

标签: c# hashset

我正在生成数百万的独特字符串。我正在使用HashSet<>以此目的。我必须定期将结果存储在文本文件中。

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

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

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

1 个答案:

答案 0 :(得分:2)

ElementAt()每次调用时都必须从集合的开头进行迭代。这就是它效率低下的原因。

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

latest列表:

var latest = new List<string>();

添加元素:

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

将最新信息保存到文件:

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