首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java Map 實戰:統計字串中各字母出現次數

     編輯:Java 綜合教學

題目需求

給定一個字串,統計其中每個英文字母(不分大小寫)出現的次數,並按字母自然順序輸出,格式如 a(1) b(2) c(3)...。

解題思路

  1. 將字串轉為字元陣列 char[]。
  2. 使用 TreeMap<Character, Integer> 自動按鍵(字母)排序。
  3. 遍歷陣列,忽略非字母字符;對每個字母轉小寫後作為 Key 查 Map:
    • 若 Key 不存在,放入 (字母, 1)。
    • 若存在,取出舊值 +1 後覆蓋。
  4. 最後遍歷 Map 組裝結果字串。

完整程式碼

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 高效拼接字串。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved