首页 > 代码库 > week2 词频统计第一次更新
week2 词频统计第一次更新
词频统计:
功能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 = http://www.mamicode.com/((Integer) map.get(key)).intValue();>
对单词按词频(即键值对的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 词频统计第一次更新
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。