您的位置:首页 > 其它

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

2017-03-13 19:43 483 查看
//业务需求:求给定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);//打印结果
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: