码迷,mamicode.com
首页 > 其他好文 > 详细

week2 词频统计第一次更新

时间:2016-09-13 00:13:02      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

词频统计:

功能1:小文件输入键盘在控制台下输入命令。

在控制台输入文件名:使用scanner获取控制台数据

System.out.println("请输入要统计的文件路径");
Scanner sc = new Scanner(System.in);
String road = sc.nextLine();
FileInputStream fis = new FileInputStream(road);// 要读的文件路径
InputStreamReader isr = new InputStreamReader(fis);// 字符流
BufferedReader infile = new BufferedReader(isr); // 缓冲

 从读取的txt文件中获取单词,使用正则,将非单词的部分转换成空格

String words[];
file = file.toLowerCase();
//正则将非字母,符号等用空格代替
file = file.replaceAll("[^A-Za-z]", " ");
file = file.replaceAll("\\s+", " ");
words = file.split("\\s+");                

 将获取的键值对存入hashmap

for (int i = 0; i < words.length; i++) {
		String key = words[i];
		if (map.get(key) != null) {
			int value = ((Integer) map.get(key)).intValue();
			value++;
			map.put(key, new Integer(value));
		} else {
			map.put(key, new Integer(1));
		}
}	 

 对单词按词频(即键值对的value)进行降序排列。重写Collection类中的sort方法,完成降序。

List<Map.Entry<String,Integer>> list =new ArrayList<Map.Entry<String,Integer>(map.entrySet());

Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){
        @Override
        public int compare(Entry<String, Integer> arg0, Entry<String, Integer> arg1) {
	// TODO Auto-generated method stub
	    return arg1.getValue().compareTo(arg0.getValue());
	}		
});    

 对完成排序的键值对进行输出。使用util.Map包下的Entry对hashMap进行遍历输出

for(Map.Entry<String, Integer>mapping:list){
	System.out.println(mapping.getKey()+","+mapping.getValue());
}

 运行结果:

技术分享

 

功能2. 支持命令行输入英文作品的文件名

>wf gone_with_the_wand

total 1234567 words

功能3. 支持命令行输入存储有英文作品文件的目录名,批量统计。
>dir folder
gone_with_the_wand
runbinson
janelove
>wf folder
gone_with_the_wand
total 1234567 words

功能4. 从控制台读入英文单篇作品

在控制台可以输入英文文章名字或者文章内容

 

week2 词频统计第一次更新

标签:

原文地址:http://www.cnblogs.com/yumiaomiao/p/5866266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!