Java 讀取字串中字元的個數
阿新 • • 發佈:2018-12-12
以“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)