对文本文件中的单词统计出现的次数(即词频)并按词频的从高到低排序
//业务需求:求给定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 map = new HashMap();//建一个存放读入数据的集合
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> entrySet = map.entrySet();//集合中的元素以k,v形式取出
ArrayList> list = new ArrayList>(entrySet);//放入List集合中
Collections.sort(list, new Comparator>() {//进行降序排序
@Override//重写比较器
public int compare(Entry o1, Entry o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
System.out.println(list);//打印结果
}
}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
