使用Java删除文件中的重复行

使用Java删除文件中的重复行,第1张

使用Java删除文件中的重复行

嗯… 40兆似乎足够小,您可以建立一个

Set
线条,然后全部打印出来。这将比O(n 2)I / O工作更快。

就像这样(忽略异常):

public void stripDuplicatesFromFile(String filename) {    BufferedReader reader = new BufferedReader(new FileReader(filename));    Set<String> lines = new HashSet<String>(10000); // maybe should be bigger    String line;    while ((line = reader.readLine()) != null) {        lines.add(line);    }    reader.close();    BufferedWriter writer = new BufferedWriter(new FileWriter(filename));    for (String unique : lines) {        writer.write(unique);        writer.newline();    }    writer.close();}

如果顺序很重要,则可以使用

linkedHashSet
而不是
HashSet
。由于元素是通过引用存储的,因此与实际数据量相比,额外链表的开销应该微不足道。

编辑: 正如Workshop
Alex指出的那样,如果您不介意制作临时文件,则只需在阅读时打印出来即可。这使您可以使用

HashSet
而不是
linkedHashSet
。但是我怀疑您会注意到这样的I
/ O绑定 *** 作的区别。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5489792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存