• 实训一——词频统计


     

    1. 学号:16012019 姜海睿 16012006 刘晨

        GIT的提交地址:https://gitee.com/bubblerui/0619/tree/master

    2. 实训照片

    3. 本次作业的解题思路

    老五在寝室吹牛他熟读过《鲁滨逊漂流记》,在女生面前吹牛热爱《呼啸山庄》《简爱》和《飘》,在你面前说通读了《战争与和平》。但是,他的四级至今没过。你们几个私下商量,这几本大作的单词量怎么可能低于四级,大家听说你学习《构建之法》,一致推举你写个程序名字叫wf,统计英文作品的单词量并给出每个单词出现的次数,准备用于打脸老五。

    希望实现以下效果:

    • 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符。
    • 2.统计英文单词在本文件的出现次数
    • 3.将统计结果排序
    • 4.显示排序结果
    import java.io.BufferedReader;  
    import java.io.FileReader;  
    import java.util.ArrayList;  
    import java.util.Collections;  
    import java.util.Comparator;  
    import java.util.List;  
    import java.util.Map;  
    import java.util.Map.Entry;  
    import java.util.TreeMap;  
      
    /** 
     *  
     * @author cute 
     * 
     * 
     * 实现从文件中读入英文文章,统计单词个数,并按值从大到小输出 
     */  
      
    public class wf {  
      
        public static void main(String[] args) throws Exception {  
              
            BufferedReader br = new BufferedReader(new FileReader("F:\BUBBLE\文章.txt"));  
            List<String> lists = new ArrayList<String>();  //存储过滤后单词的列表  
            String readLine = null;
            while((readLine = br.readLine()) != null){  
                String[] wordsArr1 = readLine.split("[^a-zA-Z]");  //过滤出只含有字母的  
                for (String word : wordsArr1) {  
                    if(word.length() != 0){  //去除长度为0的行  
                        lists.add(word);  
                    }  
                }  
            }  
              
            br.close();  
              
            Map<String, Integer> wordsCount = new TreeMap<String,Integer>();  //存储单词计数信息,key值为单词,value为单词数       
              
            //单词的词频统计  
            for (String li : lists) {  
                if(wordsCount.get(li) != null){  
                    wordsCount.put(li,wordsCount.get(li) + 1);  
                }else{  
                    wordsCount.put(li,1);  
                }  
      
            }  
              
            SortMap(wordsCount);    //按值进行排序  
          
        }  
          
        //按value的大小进行排序  
        public static void SortMap(Map<String,Integer> oldmap){  
              
            ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(oldmap.entrySet());  
              
            Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){  
                public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {  
                    return o2.getValue() - o1.getValue();  //降序  
                }  
            });  
              
            for(int i = 0; i<list.size(); i++){  
                System.out.println(list.get(i).getKey()+ ": " +list.get(i).getValue());  
            }     
        }  
      
    }

    通过检索文本文档上的英文文章,统计英文单词出现的次数,通过使用循环,排序,定义类,文件夹批量处理,并且需要使用排序方法实现降序输出

    4. 本次作业的运行结果截图

    5. 小结感受:这次通过两个人.一起配合,一起完成了此次任务,一个指挥一个操作,相比一个人来说更加容易,正所谓人心齐泰山移,在遇到困难时通过查找资料,上网和寻求同学帮助问题迎刃而解。对于Java的认知还不深,以至于后面关于排序那部分代码搞不清,我觉得自己以后需要加强练习,并且学会逐渐地积累阅读各种类型难度代码,这样才能对以后遇到的各种问题不至于手足无措。

    6.优缺点:在此次实训中,配合还是相对默契,没有过多的磨合,而是彼此很了解,也为此次实训减轻了一些困难,但是在此次实训中,也发现了自身还有很多知识点掌握不牢固或者没有掌握,也因为平时操作少,对于一些基本概念没有很深的理解,为实训增加了困难。

  • 相关阅读:
    Windows 本地计算机免安装 MySQL 数据库(zip 包)
    搭建SVN+Apache+SVNmanager
    「解读」华为云桌面究竟有何厉害之处
    华为云会议的前世今生
    CentOS 8 在线安装zabbix
    我是如何被我的大创项目榨干的
    我要怎么提升/优化 回归模型?
    20211909 202120222 《网络攻防实践》第六周作业
    20211904 202120222 《网络攻防实践》第五次作业
    npm、yarn、pnpm区别
  • 原文地址:https://www.cnblogs.com/bubblerui/p/10102106.html
Copyright © 2020-2023  润新知