【BigData】Java基础_读取文件并统计文件中每个单词出现的次数

需求

从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());
        }
    }
}

 

posted @ 2019-12-28 10:14  OLIVER_QIN  阅读(2035)  评论(0编辑  收藏  举报