Java_基础—获取文本上字符出现的次数

来源:互联网 发布:禁止在淘宝网上出售 编辑:程序博客网 时间:2024/05/14 01:30
package com.sora.test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.TreeMap;public class Test5 {    /*     * 获取一个文本上每个字符出现的次数,将结果写在times.txt上     * 分析:     * ① 创建带缓冲的输入流对象     * ② 创建双列集合对象TreeMap     * ③ 将读到的字符存储在双列集合中,存储的时候要判断,如果不包含这个键,就将键和1存储,如果包含这个键,就将该键和值加1存储     * ④ 关闭输入流     * ⑤ 创建输出流对象     * ⑥ 遍历集合将集合中的内容写到times.txt     * ⑦ 关闭输出流     */    public static void main(String[] args) throws IOException {        //① 创建带缓冲的输入流对象        BufferedReader br = new BufferedReader(new FileReader("zzz.txt"));        //② 创建双列集合对象TreeMap        TreeMap<Character,Integer> tm = new TreeMap<>();        //③ 将读到的字符存储在双列集合中,存储的时候要判断,如果不包含这个键,就将键和1存储,如果包含这个键,就将该键和值加1存储        int ch;        while((ch = br.read()) != -1){            char c = (char)ch;      //强制类型转换            /*if(!tm.containsKey(c)){                tm.put(c, 1);            }else{                tm.put(c, tm.get(c) + 1);            }*/            tm.put(c, !tm.containsKey(c) ? 1 : tm.get(c) + 1);        }        //④ 关闭输入流        br.close();        //⑤ 创建输出流对象        BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));        //⑥ 遍历集合将集合中的内容写到times.txt        for(Character key : tm.keySet()){            switch(key){            case '\t':                bw.write("\\t" + "=" + tm.get(key));                break;            case '\n':                bw.write("\\n" + "=" + tm.get(key));                break;            case '\r':                bw.write("\\r" + "=" + tm.get(key));                break;            default:                bw.write(key + "=" +tm.get(key));   //写出键和值            }            bw.newLine();        }        //⑦ 关闭输出流        bw.close();    }}
阅读全文
0 0
原创粉丝点击