1. 程式人生 > >Java 讀取字串中字元的個數

Java 讀取字串中字元的個數

以“aaabbbccsdlfhhk”為例 要求輸出樣式為a(3)b(3)…

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class Demo1 {

	public static void main(String[] args) {
		String str="aaabbbccsdlfhhk";
		String s=getCharCount(str);
		System.out.println(s);
	}

	private static String getCharCount(String str) {
		//1.將字串變為字元陣列
		char[] chs=str.toCharArray();
		//2.建立map集合
		Map<Character,Integer> map=new TreeMap<Character,Integer>();
		//3.遍歷
		for(int i=0;i<chs.length;i++){
			if(!(chs[i]>='a'&&chs[i]<='z')){
				continue;
			}
			//將陣列中的字母作為鍵,查map表
			Integer value=map.get(chs[i]);
			int count=1;//第一次的值
			//判斷值是否為空
			if(value!=null){
				count=value+1;
			}
			map.put(chs[i], count);
			/*if(value==null){
				map.put(chs[i], 1);
			}else{
				map.put(chs[i], value+1);
			}*/
		}
		return mapToString(map);
	}

	private static String mapToString(Map<Character, Integer> map) {
		StringBuilder sb=new StringBuilder();//執行緒不安全,高效
		Iterator<Character> it=map.keySet().iterator();
		while(it.hasNext()){
			Character key=it.next();
			Integer value=map.get(key);
			sb.append(key+"("+value+")");
		}
		return sb.toString();
	}

}

執行結果: a(3)b(3)c(2)d(1)f(1)h(2)k(1)l(1)s(1)