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(); }}
新聞熱點
疑難解答