java实现读取一篇英文文章,统计其中每个单词出现的次数并排序输出
2014-10-30 16:25
1166 查看
代码:
运行结果:
package com.test.string; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * java实现读取英文文章,统计其中每个单词出现的次数并输出 * @author halbert * */ public class FileWordCount { public void count() throws IOException{ BufferedReader reader = new BufferedReader(new FileReader("D:\\test\\english.txt")); StringBuffer buffer = new StringBuffer(); String line = null; while( (line = reader.readLine()) != null ){ buffer.append(line); } reader.close(); Pattern expression = Pattern.compile("[a-zA-Z]+"); //定义正则表达式匹配单词 String string = buffer.toString(); Matcher matcher = expression.matcher(string); Map<string integer=""> map = new TreeMap<string integer="">(); String word = ""; int n = 0; Integer times = 0; while(matcher.find()){ //是否匹配单词 word = matcher.group(); //得到一个单词,树映射中的键 n++; if( map.containsKey(word) ){ //如果该键存在,则表示单词出现过 times = map.get(word); //得到单词出现的次数 map.put(word, times+1); } else { map.put(word, 1); //否则单词是第一次出现,直接放入map } } List<Map.Entry<string integer="">> list = new ArrayList<Map.Entry<string integer="">>(map.entrySet()); Comparator<Map.Entry<string integer="">> comparator = new Comparator<Map.Entry<string integer="">>(){ @Override public int compare(Entry<string integer=""> left, Entry<string integer=""> right) { return (left.getValue()).compareTo(right.getValue()); } }; Collections.sort(list, comparator); System.out.println("统计分析如下:"); System.out.println("t 文章中单词总数" + n + "个"); System.out.println("具体的信息在原文件目录的result.txt文件中"); BufferedWriter bufw = new BufferedWriter(new FileWriter("D:\\test\\result.txt")); for(Entry<string integer=""> me : list){ bufw.write(me+""); bufw.newLine(); } bufw.write("english.txt中的单词总数" + n + "个"); bufw.newLine(); bufw.write("english.txt中不同单词" + map.size() + "个"); bufw.close(); } public static void main(String[] args) { try { FileWordCount fwc = new FileWordCount(); fwc.count(); } catch (IOException e) { e.printStackTrace(); } } } </string></string></string></string></string></string></string></string></string>
运行结果:
统计分析如下: t 文章中单词总数997个 具体的信息在当前目录的result.txt文件中
相关文章推荐
- 一道Java面试题 读取一篇英文文章,输出其中出现单词的次数最多的5个,写java函数
- Java面试题,读取一篇英文文章,输出其中出现单词的次数最多的5个
- Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法
- Java实现统计一篇文章中每个单词出现的次数
- 【java】统计一篇英文文章每个字母出现的次数
- Java统计一篇文章中出现次数最多的汉字或英文单词 又出现次数的统计
- java 读取键盘输入到txt文件,统计每个单词出现的次数并输出
- Java 读取一段英文文档统计每个单词出现的次数和单词的总数
- Java 读取一段英文文档统计每个单词出现的次数和单词的总数
- 统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数
- 统计海量文章内容中出现次数前K大的单词并输出(完整实现)
- 统计一篇文章中每个单词出现的次数
- java 统计文章中每个单词出现的次数
- 一个利用map统计一段英文文章中每个单词出现次数的小程序
- java编程题:输入一段英文,获取每个单词出现的次数跟位置,并排序
- 读取一篇英文文档,并输出其中出现频率最多的十个单词
- java统计一篇文章中单词出现的次数
- 针对一个文件 统计其中的单词和字符数 找出文件中出现次数最多的单词数 将文件中出现的单词按频率进行排序并输出
- Java统计一篇英文单词出现次数
- Linux作业(三)-shell统计某文章中出现频率最高的N个单词并排序输出出现次数