java统计一个文本文件英文单词

package test;

import java.io.*;
import java.util.*;

public class wordCount2 {
public static void main(String[] args) throws IOException {
File file = new File("/Users/jiachenglin/Desktop/HP7.txt");
try (FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "gbk");
BufferedReader br = new BufferedReader(isr)) {
String str;
Map<String, Integer> map = new TreeMap<>();
while ((str = br.readLine()) != null) {
String[] words = str.split("[ ,.:;'!…\"{}()?\\[\\]]");
for (int i = 0; i < words.length; i++) {
String key = words[i].toLowerCase().trim();

//添加单词
if (key.length() > 0 && Character.isLetter(key.charAt(0))) {
if (!map.containsKey(key))
map.put(key, 1);
else
map.put(key, map.get(key) + 1);
}
}

}
//Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
List<Map.Entry<String, Integer>> entrys = new ArrayList<>(map.entrySet());
Collections.sort(entrys, new myComparator());
int flag=0;
String[] a=new String[1000000];
System.out.println("请输入要查看的单词数");
Scanner s=new Scanner(System.in);
flag=s.nextInt();
int i=0;
for (Map.Entry<String, Integer> entry : entrys) {
//输出单词和数目
a[i]=entry.getKey()+" "+entry.getValue();//利用字符串数组将Map中的key与value组合
i++;
}
for(int j=0;j<flag;j++){
System.out.println(a[j]);
}
} catch (IOException e) {
e.printStackTrace();
}

}

}
class myComparator implements Comparator<Map.Entry> {
public int compare(Map.Entry o1, Map.Entry o2) {
return ((Integer) o2.getValue()).compareTo((Integer) o1.getValue());
}
}
posted @   Joranger  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示