如何创建一个从文本文件中删除重复单词的Java程序?

时间:2013-12-08 08:58:53

标签: java duplicate-removal

我想用Java创建一个可以删除文本文件中重复单词的程序。我是编程的新手,我一直在谷歌搜索,但我没有找到一个可以理解的指南来创建这样的程序。我不是要求一个完整的程序作为答案(虽然这是非常可取的:p),但我真的想要一些关于如何开发这个程序的建议。拜托,有人吗?我可以管理编程,我只是不知道应该采取什么步骤。

2 个答案:

答案 0 :(得分:1)

为了好玩,我写了一个快速解决方案,它大量使用Guava library来避免样板IO代码。

密钥是 LinkedHashMap ,是标准Java SDK的一部分,它是一个Set(即一个无重复的集合),其元素以insersertion顺序保存。

这种方法正是 eis commented ,而LinkedHashMap被用作“不允许重复的结构”。

private static void removeDuplicateWords(File file) {
    try {
        String contents = Files.toString(file, Charsets.UTF_8);
        String[] words = contents.split("\\s+"); // or however you define "word"!

        // UsingLinkedHashSet to remove duplicates while retaining order
        LinkedHashSet<String> linkedHashSet = Sets.newLinkedHashSet();
        Collections.addAll(linkedHashSet, words);

        String newContents = Joiner.on(" ").join(linkedHashSet);
        Files.write(newContents, file, Charsets.UTF_8);

    } catch (IOException e) {
        System.out.println(e);
    }
}

答案 1 :(得分:0)

使用String.split(“”)将文本中的所有单词转换为数组(String []),然后将它们附加到SET中,这样就不会出现重复项。现在循环遍历数组以重新写入文本并从SET中删除匹配的单词。添加条件如果一个单词在araay中但不在SET中(意味着它是重复的)它将不会重写

希望有所帮助