【发布时间】:2012-05-20 08:33:02
【问题描述】:
我有以下代码要优化。由于我希望文件很大,因此我没有使用 HashMap 来存储行,而是选择了 String 数组。我尝试用大约 500,000 的 n 测试逻辑,它运行了大约 14 分钟。我肯定想让它比这快得多,并感谢任何帮助或建议。
public static void RemoveDuplicateEntriesinFile(string filepath)
{
if (filepath == null)
throw new ArgumentException("Please provide a valid FilePath");
String[] lines = File.ReadAllLines(filepath);
for (int i = 0; i < lines.Length; i++)
{
for (int j = (i + 1); j < lines.Length; j++)
{
if ((lines[i] !=null) && (lines[j]!=null) && lines[i].Equals(lines[j]))
{//replace duplicates with null
lines[j] = null;
}
}
}
File.WriteAllLines(filepath, lines);
}
提前致谢!
【问题讨论】:
-
Jon Skeet 已经回答了这个问题:stackoverflow.com/questions/1245500/…
-
哇,在阅读了这个答案有多复杂之后,我不得不怀疑我的答案是否可行,它要简单得多。