1.创建带缓冲的输入流对象;
2.创建双列集合对象TreeMap;
3.将读到的字符存储在双列集合中,存储的时候要做判断:如果不包含这个键,就将键和1存储,如果包含,就将该键和值+1存储;
4.关闭输入流;
5.创建输出流对象;
6.遍历集合,将集合中的内容写到times.txt中;7.关闭输出流。
package cn.edu.jit.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;/** * 获取一个文本上每个字符出现的次数,将结果写在times.txt上。 * * 分析: * 1,创建带缓冲的输入流对象 * 2,创建双列集合对象TreeMap * 3,将读到的字符存储在双列集合中,存储的时候要做判断: * 如果不包含这个键,就将键和1存储,如果包含,就将该键和值+1存储 * 4,关闭输入流 * 5,创建输出流对象 * 6,遍历集合,将集合中的内容写到times.txt中 * 7,关闭输出流 * @author Rocky * */public class Test5 { 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<Character, Integer>(); //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 遍历集合 for(Character key : tm.keySet()) { //判断是/t或者是/n 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(); }}
新闻热点
疑难解答