实训一
---恢复内容开始---
驾驶员:葛晨延(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:因为某些不可抗力原因程序还不够完整,由下次实训补全。
---恢复内容结束---


浙公网安备 33010602011771号