java基础——统计某篇文章中每个单词出现的次数
2018-07-24 09:11
302 查看
java基础——统计某篇文章中每个单词出现的次数
找到目标txt文件,
通过创建字符输入流对象,创建缓冲流,
依次读取每行字符,
追加至整篇文章字符,
通过正则表达式(一个或多个非单词字符)分隔,得到独立的单词,
遍历字符串数组,
将单词作为Map(无须不重复)的key,出现的次数作为Map的值。
如果map中不包含此单词,其value为1,否则value+1。通
过将map转化为set集合输出key-->map.get(key)。
1.创建工具类(包括读取文件,创建输入流,读取文章等方法)
[code]import java.io.*; import java.util.HashMap; import java.util.Map; import java.util.Set; public class CountWordsUtil { //找到目标文件,创建字符输入流对象, public static Reader findFile(){ File f=new File("E:/xn/The Old Man and the Sea .txt"); Reader in=null; try{ in=new FileReader(f); }catch(IOException e){ e.printStackTrace(); } return in; } //缓存流 public static BufferedReader inputPipe(Reader in){ BufferedReader br=null; br=new BufferedReader(in); return br; } //读取文章内容 public static String readAll(BufferedReader br,Reader in){ String str; Map<String,Integer> map=new HashMap<>(); StringBuilder words=null; String allwords=null; try { StringBuilder sb = new StringBuilder(); while ((str = br.readLine()) != null) { words = sb.append(str); allwords=sb.toString(); } br.close(); in.close(); }catch(IOException e){ e.printStackTrace(); } return allwords; } //将文章以非单词字符隔开,并存储在map键值对中,并输出 public static void spiltAndCount(String allwords, Map<String,Integer> map) { String regex = "\\W+";/*/[\s]|[ ]|[,]|[.]|[“”]|[?]|[ ]*/ String[] words = allwords.split(regex); for (int i = 0; i < words.length; i++) { if (map.containsKey(words[i])) { map.put(words[i], map.get(words[i])+1); } else { map.put(words[i], 1); } } Set<String> keys = map.keySet(); for (String key : keys) { System.out.println(key + "---->" + map.get(key)); } } }
2.测试主类(读取文件)
[code]import java.io.BufferedReader; import java.io.Reader; import java.util.HashMap; import java.util.Map; public class ReadFile { public static void main(String[] args) { long star =System.currentTimeMillis(); Map<String,Integer> map=new HashMap<>(); Reader in= CountWordsUtil.findFile(); BufferedReader br=CountWordsUtil.inputPipe(in); String allwords= CountWordsUtil.readAll(br,in); CountWordsUtil.spiltAndCount(allwords, map); long end=System.currentTimeMillis(); System.out.println("运行时间是:"+(end-star)); } }
3.写出文件
[code]import java.io.*; public class WriterFile { public static void main(String[] args){ File f=new File("E:output.txt"); try{ Writer out=new FileWriter(f); Reader in= CountWordsUtil.findFile(); BufferedReader br=CountWordsUtil.inputPipe(in); String allwords= CountWordsUtil.readAll(br,in); out.write(allwords,0,allwords.length()); out.close(); }catch(IOException e){ e.printStackTrace(); } } }
阅读更多
相关文章推荐
- java 统计文章中每个单词出现的次数
- java实现读取一篇英文文章,统计其中每个单词出现的次数并排序输出
- Java实现统计一篇文章中每个单词出现的次数
- Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法
- java统计一篇文章中单词出现的次数
- Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
- java小算法—统计句子中每个单词出现的次数
- Java 统计一个字符串中每个单词,或者字母出现的次数
- Java 统计一个字符串中每个单词,或者字母出现的次数
- 【java】统计一篇英文文章每个字母出现的次数
- java 统计10000篇文章中不同单词出现的次数并以次序排序
- Java 读取一段英文文档统计每个单词出现的次数和单词的总数
- java基础练习-统计字符串中每个字符出现的次数
- N个任务掌握java系列之统计一篇文章中单词出现的次数
- java统计一篇文章中单词出现的次数
- Java 读取一段英文文档统计每个单词出现的次数和单词的总数
- 统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数
- 一个利用map统计一段英文文章中每个单词出现次数的小程序
- Java_基础—统计字符串中每个字符出现的次数
- java统计文章中单词出现的次数