package com.hu; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * 讀入123.txt文本 * 判斷一個文件的每一個文字出現次數 * * */ public class jiexi { public static void main(String[] args) throws IOException {
//建立StringBUilder用來存放全部字節 StringBuilder sb= new StringBuilder();
//建立輸入流 BufferedReader bufferedReader = new BufferedReader(new FileReader("123.txt")); String lin; while ((lin = bufferedReader.readLine()) != null) {
//添加 sb.append(lin); }
//關流 bufferedReader.close();
//調用方法jiexi1 HashMap<Character, Integer> characterIntegerHashMap = jiexi1(sb); //遍歷characterIntegerHashMap集合 Set<Map.Entry<Character, Integer>> keys = characterIntegerHashMap.entrySet();
//建立計數count int count=0; for (Map.Entry<Character, Integer> key : keys) {
//輸出集合中的內容 System.out.print(key.getKey()+"---"+key.getValue()+" ");
count++;
//換行 if (count==10){ System.out.println(); count=0; } } } public static HashMap<Character, Integer> jiexi1(StringBuilder sb) {
//建立一個以字符爲鍵,以數字爲值的map集合 Map<Character, Integer> map = new HashMap<>();
//遍歷傳來的sb for (int i=0;i<sb.length();i++) {
//以char格式接收sb char c = sb.charAt(i);
//判斷map集合中的鍵和當前字符是否存在 if ((map.containsKey(c)) != false) {
//遍歷map Set<Map.Entry<Character, Integer>> entries = map.entrySet(); for (Map.Entry<Character, Integer> entry : entries) {
//獲取當前鍵和值 Character key = entry.getKey(); Integer value = entry.getValue();
//建立記錄變量 int count=value;
//比較當前map的鍵和當前字符是否相等 if (key.equals(c)){
//相等加1 count++; map.put(c,count); } }
//若是不相等給這個字符初始化爲出現一次 }else { map.put(c,1); } }
//返回map集合 return (HashMap<Character, Integer>) map; } }