英文单词个数统计及排序

 1 import java.io.*;
 2 import java.util.*;
 3 public class treat {
 4 
 5     public static void main(String[] args) {
 6         Map<String,Integer> map=new HashMap<String,Integer>();
 7         try {
 8             File file=new File("/Users/lilongrong/Desktop/win.txt");
 9             BufferedReader read=new BufferedReader(new FileReader(file));
10             String str;
11             while((read.readLine())!=null) {
12                 str=read.readLine();
13                 String[] strsplit=str.split("\\W+");
14                 for(int i=0;i<strsplit.length;i++) {
15                     if(map.containsKey(strsplit[i])) {
16                         int a;
17                         a=map.get(strsplit[i]);
18                         map.put(strsplit[i],a+1);
19                     }else {
20                         map.put(strsplit[i],1);
21                     }
22                 }
23             }
24             Iterator<Map.Entry<String,Integer>> iterator=map.entrySet().iterator();
25             double qwe=map.size();
26             /*while(iterator.hasNext()) {
27                 Map.Entry<String,Integer> entry=iterator.next();
28                 System.out.printf("%s:%d  %.2f\n",entry.getKey(),entry.getValue(),entry.getValue()/qwe);
29             }*/
30         }
31         catch(Exception e){
32             System.err.println(e);
33         }
34         List<Map.Entry<String,Integer>> list=new ArrayList<>(map.entrySet());
35         Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){
36             @Override
37             public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
38                 return o2.getValue().compareTo(o1.getValue());
39             }
40         });
41         for(Map.Entry<String,Integer> a:list){
42             System.out.println(a.getKey()+":"+a.getValue());
43         }
44 
45     }
46 
47 }

该程序实现了大文本的单词统计与单词出现次数的排序,具体实现流程如下:

1、Bufferedreader类实现文本读入,拆分,String类下的split函数实现单词分割。

2、建立Map类,实现统计功能。

3、不排序时使用迭代器进行输出,排序时使用List接口,再使用Collections下的sort函数进行排序,for循环进行遍历输出。

收获:

1、List是一个接口,ArrayList是一个类,面向接口编程;

2、文件的读入,文件转化为文字,再把文字缓冲读入;

3、模版类Map<String,Integer>;

4、重写函数override;

5、迭代器的使用;

6、for( :)遍历的使用。

猜你喜欢

转载自www.cnblogs.com/jiaoaoshirenjinbu/p/11809975.html