import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.io.FileUtils;
public class sample{
public static void main(String[] args) throws FileNotFoundException, IOException {
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
};
File folder = new File("E:\\testfolder\\");
File[] list Of Files = folder.listFiles(filter);
for (int i = 0; i < list Of Files.length; i++) {
File file1 = list Of Files[i];
try {
String content = FileUtils.readFileToString(file1);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader ins = null;
try {
ins = new BufferedReader (
new InputStreamReader(
new FileInputStream(file 1)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String message = org.apache.commons.io.IOUtils.toString(ins);
String[] string array = message.split(" ");
List<String> list = new ArrayList<String>(Arrays.asList(string array));
// System.out.println("Repeated words found in the file");
Set<String> unique Set = new HashSet<String>(list);
for (String temp : unique Set) {
if ( (Collections.frequency(list, temp)) >= 2 ){
System.out.println(temp+"="+Collections.frequency(list, temp));
// System.out.println(temp);
int occurrences = Collections.frequency(list, 2);
}
}
}}}
到目前为止,我尝试了,但是无法获得输出 这是我的逻辑。
这些是文件中的字符串或单词。 ram ram ram 山姆山姆 男人
在这个例子中,ram sam man这些是原始单词。 剩下的公羊,公羊,山姆,山姆,男人都是重复的单词,也就是重复的单词。 所以 单词总数为8 重复单词的总数为5 剩余单词总数为3。
但是我的输出是 没有重复的单词= 3(ram = 3,sam = 3,man = 2)
这是我上面的代码 我是java的初学者。 欢迎任何建议。:)
答案 0 :(得分:1)
Collections.frequency(list, temp) - 1
而不是
Collections.frequency(list, temp)
关于网络中的collections.frequency的研究,你可以得到答案