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