java中用io流查看文件中各个字母出现的次数

查看文件中各个字母出现的次数

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Set;

public class Test {
     
    public static void main(String[] args) throws Exception {
     
        //定义一个Map集合储存数据
        //为什么用map集合?
        // map集合不能储存重复元素,如果储存的键和之前的有重复,新存入的键和值会覆盖之前的  这正是我们需要的
        HashMap<Character, Integer> map = new HashMap<>();
        //创建一个File对象.参数使用我们想要查看的文件的路径
        File f1 = new File("参数使用我们想要查看的文件的路径");
        //定义一个字符缓冲输入流更快的读取数据//此处用字符输入流最适宜
        BufferedReader br = new BufferedReader(new FileReader(f1));
        //定义个字符串用来保存每次读取的数据
        String len;
        //一次读取一行字符//whlie循环当读取的一行数据为空,则停止循环
        while ((len = br.readLine()) != null) {
     
            //将每次读取的字符串拆分成字符数组
            char[] chars = len.toCharArray();
            //使用增强for变量数组
            for (char aChar : chars) {
     
                //判断数组中的字符是不是大写或者小写字母
                if ((aChar >= 'a' && aChar <= 'z') || (aChar >= 'A' && aChar <= 'Z')) {
     
                    //是字符进入

                    //判读字符是不是第一次出现
                    if (!map.containsKey(aChar)) {
     
                        //是第一次出现,将字符当做键  出现的次数1为值  存入Map集合中
                        map.put(aChar, 1);

                    } else {
     
                        //不是第一次出现  通过get()方法得到当前字符出现的次数  (键对应的值)
                        Integer integer = map.get(aChar);
                        integer++;//本次该字符又出现了一次,将值+1,
                        map.put(aChar, integer);//将得到的新的值和  键保存到集合中
                    }
                }
            }
        }//关闭资源
        br.close();
        //遍历集合
        Set<Character> characters = map.keySet();
        for (Character character : characters) {
     
            System.out.println(character + "=" + map.get(character));

        }


    }
}

你可能感兴趣的:(题库,JAVA,java,IO,查看文件中字母出现的次数)