栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用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绑定操作的区别。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497672.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号