java实训一——词频统计

---恢复内容开始---

驾驶员:葛晨延(16012010)

领航员:张广哲(16012007)

码云:https://gitee.com/happywindmannn/GCYshixun1/tree/master

实训过程照片:

 1 import java.io.*;
 2 import java.util.*;
 3 import java.io.BufferedReader;
 4 import java.io.FileReader;
 5 import java.util.ArrayList;
 6 import java.util.Map;
 7 import java.util.List;
 8 import java.util.Map.Entry;
 9 import java.util.TreeMap;
10 public class wtf{
11     public static void main(String args[])throws Exception{
12         StringBuilder result = new StringBuilder();
13         BufferedReader file = new BufferedReader(new FileReader("D:\\javas\\a.txt"));
14         List<String> s =new ArrayList<String>();
15         String s1 = null;
16         while((s1 = file.readLine()) != null){
17             String [] s2 = s1.split("[[^a-zA-Z]]");
18             for(String s3 : s2){
19                 if(s3.length() != 0){
20                     s.add(s3);
21                 }
22             }
23         }
24         Map<String, Integer> TreeMap = new TreeMap<String,Integer>();
25         for(String s4:s){
26             if(TreeMap.get(s4) != null){
27             TreeMap.put(s4,TreeMap.get(s4)+1);
28             }
29             else{
30                 TreeMap.put(s4,1);
31             }
32         }
33
34
35         System.out.println("以下是本文章中出现单词频率前十的单词,以及频率:\t");
36         showmap(TreeMap);
37         file.close();
38     }
39     public static void showmap(Map<String,Integer> oldmap){
40
41         ArrayList<Map.Entry<String,Integer>> map = new ArrayList<Map.Entry<String,Integer>>(oldmap.entrySet());
42
43         Collections.sort(map,new Comparator<Map.Entry<String,Integer>>(){
44
45             public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
46                 return o2.getValue() - o1.getValue();
47             }
48         });
49
50         for(int i = 0; i<10; i++){
51
52             System.out.println(map.get(i).getKey()+ ": " +map.get(i).getValue());
53         }
54     }
55
56 } 

运行结果:

需求:

1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符。
2.统计英文单词在本文件的出现次数
3.将统计结果排序
4.显示排序结果

解题思路:

x代表对象
1.BufferedReader x = new BufferedReader(new FileReader(文件绝对路径));
缓冲流,更加油效率的读取文件,缓冲访问区(类似于内存条)。
另有方法readline()按行读取可以使用。
相比InputStream()字节流,FileReader()字符流更快。
2.List<String> x = new ArrayList<String>();
创建动态数组,<>中的位数组类型,如int,double,String。
该数组用于存储文章的所有单词。
3. String[] x = readLine.split("[^a-zA-Z]");
创建数组,用readLine()逐行过滤,括号内位正则表达式。
4.for(String x:y){}
“增强的for循环”,x为字符串,y为字符数组
作用是将数组内所有元素,赋值到x中,有多少元素创建多少个x。

5.Map<String, Integer> x = new TreeMap<String,Integer>();
HashMap<String, Integer> x = new HashMap<String, Integer>();
map树(有序) hashmap哈希表(无序)
存储单词计数信息,Stinrg是key值为单词,Integer是value为词频
map.put(k,v)给表赋值
map.get(key)获取key的value

ps:因为某些不可抗力原因程序还不够完整,由下次实训补全。

---恢复内容结束---

原文地址:https://www.cnblogs.com/happywindman/p/10116015.html

时间: 2024-12-15 09:32:29

java实训一——词频统计的相关文章

Java程序设计综合项目实训一——词频统计

领航员:周楷柠 (学号:16012005) 驾驶员:陈炳全 (学号:16012022) 码云地址:https://gitee.com/xywymxs/05zkn-22cbq-1 实训项目过程照片: 解题思路: 首先,词频统计是一个综合性较强.知识涉及较广的实训项目,我们首先将它模块化,一块一块的进行编写:我们将它分为三个模块,模块一是WordOfArticle.java模块,该部分是对.txt文件中文字的处理,看它是否重复出现且出现过几次等操作:模块二是Read_File.java模块,该部分是

Java实现的一个词频统计程序

import java.util.HashMap; import java.util.Iterator; public class WordCount { public static void main(String[] args) { String[] text=new String[]{"the weather is good ","today is good","today has good weather","good weat

Java实训笔记(二)——-抽象类-接口-泛型-集合

1.1方法的可变参数从JDK1.5之后,定义方法时参数的个数可以变化语法:最后一个数据类型后增加3个点注意:1.可变参数只能处于参数列表的最后:2.一个方法中最多只能包含一个可变参数:3.可变参数的本质就是一个数组,因此在调用一个包含可变参数的方法时,既可以传人多个参数,也可以传入一个数组.1.2装箱与拆箱基本数据类型与对应的封装类之间能够自动进行转换,其本质是Java的自动装箱与拆箱过程.-装箱是指将基本类型数据值转换成对应的封装类对象,即将栈中的数据封装成对象存放到堆中的过程.-拆箱是装箱的

Java实现英语文章词频统计

1.需求:对于给定的英文文章进行单词频率的统计 2.分析: (1)建立一个如下图所示的数据库表word_frequency用来存放单词和其对应数量 (2)Scanner输入要查询的英文文章存入String中 (3)对String根据空格进行拆分存入word_frequency表中,并统计相应数量 (4)对word_frequency表中的数据按照频率由大到小,频率相同的情况下按照字母表顺序排序并输出 3.具体实现代码: 4.输入语句:You should help to set the dinn

Java实训第1天

一.Java运行环境 1.JDK和JRE JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库. 2.环境变量配置 变量名 JAVA_HOME PATH 变量值 C:\Java\jdk1.7.0_13 %JAVA_HOME%/bin 3.EditPlus编辑器配置 工具>>参数设置

Java实训项目--影碟管理软件

一.项目名称 影碟管理软件 二.软件描述 该影碟管理程序可以只在控制台上运行,可以不需要界面.该软件的功能有如下功能: A:可以查看该店铺的所有影碟的信息: B:可以添加新的影碟信息: C:可以修改现有影碟信息: D:可以删除某个影碟信息: E:所有影碟的数据都保存在硬盘的某个txt文件中,在修改完信息后,硬盘中的该文件也能同步改变. 三.代码 1 import java.util.Scanner; 2 import java.util.LinkedList; 3 import java.uti

java实训项目-模拟自动挡汽车

Java程序设计课程设计项目名称 ? 项目名称:自动挡汽车操作模拟系统的设计与实现 英文名称:Design and Implementation of Operation Simulation System aboutAutomatic Vehicle 1.功能描述: 1)汽车的操作正常为启动(或熄火).挂档.制动.油门控制等操作: 2)挂档实现自动挡的4档操作,既驻车档.倒车档.空档.行车档: 3)使用图形界面进行操作,汽车的状态在图形界面上显示出来: 4)操作流程不合理,要有相应的控制: 5

第一二次Java实训

1.公鸡5元/只,母鸡3元/只,小鸡3只/元,问100元买100只鸡,公鸡.母鸡.小鸡各几只? 2.声明一个整型变量a,并赋初值5,在程序中判断a是奇数还是偶数,然后输出判断的结果. 3.从键盘输入圆的半径,计算圆的面积并输出. 4.编写程序:实现一个数字加密器.运行时输入加密前的整数,通过加密运算后,输出加密后的结果,加密结果仍为一整数. 加密规则为:加密结果 = (整数*10+5) / 2 + 3.14159 5.编写程序,有1.2.3.4共4个数字,能组成多少个互不相同且无重复数字的三位数

第四次Java实训

编写“电费管理类”及其测试类. 第一步 编写“电费管理”类 私有属性:上月电表读数.本月电表读数 构造方法:无参.2个参数 成员方法:getXXX()方法.setXXX()方法 成员方法:显示上月.本月电表读数 第二步 编写测试类 创建对象一:上月电表读数为1000,本月电表读数为1200. 要求:调用无参构造方法创建对象: 调用setXXX()方法初始化对象: 假设每度电的价格为1.2元,计算并显示本月电费. 创建对象二:上月电表读数1200,本月电表读数为1450. 要求:调用2个参数的构造