A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hong774997735 中级黑马   /  2015-9-26 19:59  /  282 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.heima.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;

public class Test3 {

        /**
         * 获取一个文本上每个字符出现的次数,将结果写在times.txt上
         *
         * 分析:
         * 1,创建带缓冲的输入流对象
         * 2,创建双列集合对象TreeMap
         * 3,将读到的字符存储在双列集合中,存储的时候要做判断,如果不包含这个键,就将键和1存储,如果包含这个键,就将该键和值加1存储
         * 4,关闭输入流
         * 5,创建输出流对象
         * 6,遍历集合将集合中的内容写到times.txt中
         * 7,关闭输出流
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                //1,创建带缓冲的输入流对象
                BufferedReader br = new BufferedReader(new FileReader("zzz.txt"));
                //2,创建双列集合对象TreeMap
                TreeMap<Character, Integer> tm = new TreeMap<>();
                //3,将读到的字符存储在双列集合中,存储的时候要做判断,如果不包含这个键,就将键和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);
                }
                //4,关闭输入流
                br.close();
                //5,创建输出流对象
                BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));
                //6,遍历集合将集合中的内容写到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));                         //写出键和值
                                break;
                        }
                        bw.newLine();
                }
                //7,关闭输出流
                bw.close();
        }

}
怎样让字符出现的次数按顺序打印?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马