版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/junjunba2689/article/details/82055347
思路:
1.读入文件
2.按行读,每行以空格分割得到str数组
3.将str数组中每个单词添加到hashmap
4.遍历hashmap,value为1的输出,并统计个数
//一段英文中找无重复单词及个数
public static void findSingleWord() throws IOException{
File file = new File("e:/info.log");
BufferedReader br = new BufferedReader(new FileReader(file));
Map<String,Integer> map = new HashMap<>();
String line = br.readLine();
while(line!=null){
String[] arr=line.split(" ");
for(int i=0;i<arr.length;i++){
if(map.get(arr[i])==null){
map.put(arr[i],1);
}else{
map.put(arr[i], map.get(arr[i])+1);
}
}
line = br.readLine();
}
int count = 0;
for(Map.Entry<String, Integer> item:map.entrySet()){
if(item.getValue()==1){
System.out.println(item.getKey());
count++;
}
}
System.out.println(count);
br.close();
//排序,输出出现次数最多的单词和次数
List<Map.Entry<String,Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
return o2.getValue()-o1.getValue();
}
});
int i =0;
while(i<3){
Map.Entry<String, Integer> item = list.get(i);
System.out.println(item.getKey()+"---"+item.getValue());
i++;
}
}