集合框架-統計字串中每個字元出現的次數案例程式碼實現

ZHOU_VIP發表於2017-05-01

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);
	}
}



相關文章