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

  1. package com.heima.test;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileReader;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.util.TreeMap;

  9. public class Test3 {

  10.         /**
  11.          * 获取一个文本上每个字符出现的次数,将结果写在times.txt上
  12.          *
  13.          * 分析:
  14.          * 1,创建带缓冲的输入流对象
  15.          * 2,创建双列集合对象TreeMap
  16.          * 3,将读到的字符存储在双列集合中,存储的时候要做判断,如果不包含这个键,就将键和1存储,如果包含这个键,就将该键和值加1存储
  17.          * 4,关闭输入流
  18.          * 5,创建输出流对象
  19.          * 6,遍历集合将集合中的内容写到times.txt中
  20.          * 7,关闭输出流
  21.          * @throws IOException
  22.          */
  23.         public static void main(String[] args) throws IOException {
  24.                 //1,创建带缓冲的输入流对象
  25.                 BufferedReader br = new BufferedReader(new FileReader("zzz.txt"));
  26.                 //2,创建双列集合对象TreeMap
  27.                 TreeMap<Character, Integer> tm = new TreeMap<>();
  28.                 //3,将读到的字符存储在双列集合中,存储的时候要做判断,如果不包含这个键,就将键和1存储,如果包含这个键,就将该键和值加1存储
  29.                 int ch;
  30.                 while((ch = br.read()) != -1) {
  31.                         char c = (char)ch;                                        //强制类型转换
  32.                         /*if(!tm.containsKey(c)) {
  33.                                 tm.put(c, 1);
  34.                         }else {
  35.                                 tm.put(c, tm.get(c) + 1);
  36.                         }*/
  37.                         tm.put(c, !tm.containsKey(c) ? 1 : tm.get(c) + 1);
  38.                 }
  39.                 //4,关闭输入流
  40.                 br.close();
  41.                 //5,创建输出流对象
  42.                 BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));
  43.                 //6,遍历集合将集合中的内容写到times.txt中
  44.                 for(Character key : tm.keySet()) {
  45.                         switch (key) {
  46.                         case '\t':
  47.                                 bw.write("\\t" + "=" + tm.get(key));        
  48.                                 break;
  49.                         case '\n':
  50.                                 bw.write("\\n" + "=" + tm.get(key));
  51.                                 break;
  52.                         case '\r':
  53.                                 bw.write("\\r" + "=" + tm.get(key));
  54.                                 break;
  55.                         default:
  56.                                 bw.write(key + "=" + tm.get(key));                         //写出键和值
  57.                                 break;
  58.                         }
  59.                         bw.newLine();
  60.                 }
  61.                 //7,关闭输出流
  62.                 bw.close();
  63.         }

  64. }
复制代码

0 个回复

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