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); } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451224.html
標籤:Java
