java实验6 词频统计_java实训一——词频统计

本文介绍了一个简单的Java程序,该程序能够从指定的文本文件中读取内容,并统计每个单词出现的频率。程序首先通过使用正则表达式来过滤掉非字母字符,然后将文件中的文本拆分为单词,并使用TreeMap进行统计和排序。最后输出出现频率最高的前十个单词及其出现次数。

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

驾驶员:葛晨延(16012010)

领航员:张广哲(16012007)

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

实训过程照片:

07ed659febb1b752daeaf28c92fdd730.png

1 import java.io.*;2 import java.util.*;3 importjava.io.BufferedReader;4 importjava.io.FileReader;5 importjava.util.ArrayList;6 importjava.util.Map;7 importjava.util.List;8 importjava.util.Map.Entry;9 importjava.util.TreeMap;10 public classwtf{11 public static void main(String args[])throwsException{12 StringBuilder result = newStringBuilder();13 BufferedReader file = new BufferedReader(new FileReader("D:\\javas\\a.txt"));14 List s =new ArrayList();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 TreeMap = new TreeMap();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(Mapoldmap){40

41 ArrayList> map = new ArrayList>(oldmap.entrySet());42

43 Collections.sort(map,new Comparator>(){44

45 public int compare(Entry o1, Entryo2) {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 }

运行结果:

29d2f294832b14445fbc1ed6aebf0663.png

需求:

1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符。

2.统计英文单词在本文件的出现次数

3.将统计结果排序

4.显示排序结果

解题思路:

x代表对象

1.BufferedReader x = new BufferedReader(new FileReader(文件绝对路径));

缓冲流,更加油效率的读取文件,缓冲访问区(类似于内存条)。

另有方法readline()按行读取可以使用。

相比InputStream()字节流,FileReader()字符流更快。

2.List x = new ArrayList();

创建动态数组,<>中的位数组类型,如int,double,String。

该数组用于存储文章的所有单词。

3. String[] x = readLine.split("[^a-zA-Z]");

创建数组,用readLine()逐行过滤,括号内位正则表达式。

4.for(String x:y){}

“增强的for循环”,x为字符串,y为字符数组

作用是将数组内所有元素,赋值到x中,有多少元素创建多少个x。

5.Map x = new TreeMap();

HashMap x = new HashMap();

map树(有序) hashmap哈希表(无序)

存储单词计数信息,Stinrg是key值为单词,Integer是value为词频

map.put(k,v)给表赋值

map.get(key)获取key的value

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值