給定一個字串,統計其中每個英文字母(不分大小寫)出現的次數,並按字母自然順序輸出,格式如 a(1) b(2) c(3)...。
char[]。(字母, 1)。package cn.itcast.p1.map.test;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class Maptest {
public static void main(String[] args) {
String str = "fdgavAde bs5dDadfgjkdgasxbccxvvcxn1bnb-dfs";
String result = getCharCount(str);
System.out.println(result);
}
private static String getCharCount(String str) {
char[] chs = str.toCharArray();
Map<Character, Integer> map = new TreeMap<>();
for (char ch : chs) {
// 只處理英文字母,忽略大小寫
if (!(Character.toLowerCase(ch) >= 'a' && Character.toLowerCase(ch) <= 'z')) {
continue;
}
char key = Character.toLowerCase(ch);
Integer value = map.get(key);
int count = (value == null) ? 1 : value + 1;
map.put(key, count);
}
return mapToString(map);
}
private static String mapToString(Map<Character, Integer> map) {
StringBuilder sb = new StringBuilder();
for (Character key : map.keySet()) {
sb.append(key).append('(').append(map.get(key)).append(") ");
}
return sb.toString().trim();
}
}

輸出範例:a(3) b(4) c(3) d(5) f(3) g(3) j(1) k(1) n(1) s(3) v(3) x(3)
TreeMap 保證 Key 自然有序(a-z)。Character.toLowerCase() 統一大小寫。StringBuilder 高效拼接字串。