需求
从test.txt文件中读取内容,并且统计每个单词在文件中出现的次数,文件内容如下:
hello ZhangSan
hello Lisi
hello Xiaohua
实现代码
实现逻辑:
①先使用BufferedReader读取文件中的内容
②将读取到的内容存储到数组中,并且根据分隔符将单词分隔
③在HashMap中进行统计个数
package cn.test.logan.day09; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map.Entry; import java.util.Set; /** * 从文件test.txt中读取内容,统计每个单词出现的次数 * @author QIN * */ public class WordCount { public static void main(String[] args) throws Exception { //创建一个HashMap对象 HashMap<String,Integer> map = new HashMap<>(); // 新建BufferedReader对象 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:/test.txt"))); //定义一个数组,将读取到的元素先放到数组中 String line = ""; while((line = br.readLine())!=null){ String[] wordline = line.split(" "); for(String word:wordline){ if(map.containsKey(word)){ // 判断是否存在该单词 Integer value = map.get(word); //存在则将value+1,不存在则直接新增即可 map.put(word, value+1); }else{ map.put(word, 1); } } } // 关闭流 br.close(); /** * 循环遍历map */ // 取出set集合 Set<String> keyset = map.keySet(); // 根据key取出value for(String key:keyset){ int value = map.get(key); System.out.println(key+":"+value); } System.out.println("----------------------------"); // 使用Entry打印 Set<Entry<String, Integer>> entrySet = map.entrySet(); for(Entry<String, Integer> ent:entrySet){ System.out.println(ent.getKey() + ":" + ent.getValue()); } } }