package cn.itcast_05;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*
* 需求 :"aababcabcdabcde",獲取字串中每一個字母出現的次數要求結果:a(5)b(4)c(3)d(2)e(1)
*
* 分析:
* A:定義一個字串(可以改進為鍵盤錄入)
* B:定義一個TreeMap集合
* 鍵:Character
* 值:Integer
* C:把字串轉換為字元陣列
* D:遍歷字元陣列,得到每一個字元
* E:拿剛才得到的字元作為鍵到集合中去找值,看返回值
* 是null:說明該鍵不存在,就把該字元作為鍵,1作為值儲存
* 不是null:說明該鍵存在,就把值加1,然後重寫儲存該鍵和值
* F:定義字串緩衝區變數
* G:遍歷集合,得到鍵和值,進行按照要求拼接
* H:把字串緩衝區轉換為字串輸出
*
* 錄入:linqingxia
* 結果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
*/
public class TreeMapDemo {
public static void main(String[] args) {
// 定義一個字串(可以改進為鍵盤錄入)
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字串:");
String line = sc.nextLine();
// 定義一個TreeMap集合
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
//把字串轉換為字元陣列
char[] chs = line.toCharArray();
//遍歷字元陣列,得到每一個字元
for(char ch : chs){
//拿剛才得到的字元作為鍵到集合中去找值,看返回值
Integer i = tm.get(ch);
//是null:說明該鍵不存在,就把該字元作為鍵,1作為值儲存
if(i == null){
tm.put(ch, 1);
}else {
//不是null:說明該鍵存在,就把值加1,然後重寫儲存該鍵和值
i++;
tm.put(ch,i);
}
}
//定義字串緩衝區變數
StringBuilder sb= new StringBuilder();
//遍歷集合,得到鍵和值,進行按照要求拼接
Set<Character> set = tm.keySet();
for(Character key : set){
Integer value = tm.get(key);
sb.append(key).append("(").append(value).append(")");
}
//把字串緩衝區轉換為字串輸出
String result = sb.toString();
System.out.println("result:"+result);
}
}