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);
}
}
/***不懂裏面的的壹些方法的可以找本書看看Map集合方面的,還有學會查API,否則妳壹輩子都讀不懂JAVA程序的,其實我這個不用分析的話應該是這個問題的最簡解了吧。。。。***/