对文本文件中的单词统计出现的次数(即词频)并按词频的从高到低排序

//业务需求:求给定words.txt中的相同单词出现的次数(即词频),并按照单词出现次数的从高到低排序!(原文本文件中只有单词和空格,且全为小写)

//关键词  IO流 HashMap ArrayList 

//业务分析:1.读入文件,拿到内容;2.解析文件,进行切分;3.将每个单词放入集合;4.统计出现次数并排序

代码如下:

public class Test33 {
public static void main(String[] args) throws Exception {
//读文件
try(BufferedReader br = new BufferedReader(new FileReader("D:/words.txt"))){
HashMap<String, Integer> map = new HashMap<String, Integer>();//建一个存放读入数据的集合
String line = null;//每次读取一行
while((line=br.readLine())!=null){//循环读入
String[] split = line.split(" ");//切分
for(String word : split){//遍历字符串数组
if(word.length()!=0){//判断对象不为空
if(map.containsKey(word)){//判断集合中是否包括目标单词
map.put(word, map.get(word)+1);//如果包括,value值+1,如果不包括,将新单词放入集合中
}
else{
map.put(word, 1);
}
}
}
}
Set<Entry<String,Integer>> entrySet = map.entrySet();//集合中的元素以k,v形式取出
ArrayList<Entry<String,Integer>> list = new ArrayList<Entry<String, Integer>>(entrySet);//放入List集合中
Collections.sort(list, new Comparator<Entry<String, Integer>>() {//进行降序排序
@Override//重写比较器
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
System.out.println(list);//打印结果
}
}
}

 

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值