package Day18; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; /* * 分析: * A:首先鍵盤輸入一個字元串 * B:創建一個TreeMap集合 鍵唯一 鍵值覆蓋--自然排序 * C ...
package Day18; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; /* * 分析: * A:首先鍵盤輸入一個字元串 * B:創建一個TreeMap集合---鍵唯一---鍵值覆蓋--自然排序 * C:將輸入的字元串轉換為字元數組 * D: 對字元數組進行遍歷獲取每個字元 * E:利用獲取的每個字元來獲取集合中的鍵值 * A:如何鍵值返回的null則將該字元添加到集合的鍵中--並將鍵值賦值為1 * B:如果返回值不為null則將返回值進行加1 * 、 C:此時添加集合的鍵是字元--鍵值是返回值加1 * D:同一個鍵實現鍵值的覆蓋 * F:創建字元緩衝區---進行輸出字元的拼接----(拼接比較特別) * G:遍歷TreeMap集合--遍歷的鍵和鍵值拼接添加到字元緩衝區 * H: 將字元緩衝的元素---轉化為字元串 * I: 輸出字元串得到最終結果 * * G: * */ public class Map8 { public static void main(String[] args) { //鍵盤輸入字元串 Scanner sc = new Scanner(System.in); //提示用戶輸入一段字元串 System.out.println("請你輸入一段字元串"); //定義鍵盤輸入對象的類型--字元串 String line = sc.nextLine(); //創建一個TreeMap集合進行 //鍵和鍵值的類型都為引用類型 //其中的鍵的類型是char的封裝類Character也就是引用類 //鍵值的類型是int類型的封裝類Integer TreeMap<Character,Integer> AA = new TreeMap<Character, Integer>(); //將字元串轉換為字元數組 char [] arr = line.toCharArray(); //對這個字元數組進行遍歷---獲取每個字元 //使用增強for for(char e: arr){ //獲取的字元向集合中尋找鍵值 Integer SM = AA.get(e); //對獲取的鍵值進行判斷 //判斷鍵值是否為null--如果為null則將該字元添加為鍵--鍵值設置為1 if(SM==null){ AA.put(e,1); }else{ //如果鍵值不為null--說明集合中已經存在該建值 //這是的我們只需要進行鍵值的覆蓋---使用同一個鍵--賦值不同的值 SM++; AA.put(e,SM); } } //創建字元串緩衝區---進行最後遍曆數據的拼接 StringBuilder AB = new StringBuilder(); //遍歷TreeMap集合--獲取鍵和值 //獲取鍵的集合 Set<Character> ABC = AA.keySet(); //對獲取的鍵--進行遍歷 for(Character w: ABC){ //根據鍵--找到對應的鍵值 --鍵值的類型是Integer Integer F = AA.get(w); //輸出查看鍵和鍵值 //System.out.println(w+"---"+F); //對遍歷的集合的鍵和值進行字元串的拼接----請仔細觀察此字元串 AB.append(w).append("(").append(F).append(")"); } //把字元串緩衝區的元素轉化為字元串進行輸出 String result = AB.toString(); System.out.println(result); } }