zoukankan      html  css  js  c++  java
  • 【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());
            }
        }
    }
  • 相关阅读:
    #检查磁盘使用率超过90%,并且后台进程没有rman在跑,就运行 /data/script/del_dg_arch.sh 脚本清理归档
    linux shell数据重定向
    创建用户
    Linux HA+ Oracle 安装维护手册
    解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range
    Linux 文件不能被root修改与编辑原因
    python中的时间戳和格式化之间的转换
    Python-Redis-发布订阅
    Python-Redis-常用操作&管道
    Python-Redis-Set
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12110872.html
Copyright © 2011-2022 走看看