获取一个文本上每个字符出现的次数,将结果写在times.txt上

来源:互联网 发布:菜鸟网络 高科技园区 编辑:程序博客网 时间:2024/04/28 17:10
分析:

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,创建双列集合对象TreeMapTreeMap<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);}//4br.close();//5 创建输出流对象BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));//6 遍历集合for(Character key : tm.keySet()) {//判断是\t或者是\nswitch (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 0
原创粉丝点击