天天看點

統計字元串中每個字元出現的次數(TreeMap實作)

統計字元串中每個字元出現的次數TreeMap實作

    • 案例需求
    • 實作思路
    • 代碼實作
    • 運作結果

案例需求

鍵盤錄入一個字元串,要求統計字元串中每個字元串出現的次數。

舉例:鍵盤錄入“aababcabcdabcde” 在控制台輸出:“a[5]b[4]c[3]d[2]e[1”

實作思路

  • 鍵盤錄入字元串用Scanner實作鍵盤輸入字元串
  • 使用TreeMap來儲存數組,因為TreeMap可以用鍵值對的形式儲存,還可以實作排序,是以建立TreeMap集合
  • 周遊字元串,使用for循環來實作,并用CharAt(i)來擷取字元中的每一個字元(鍵)。
  • 接下來使用get(key)擷取每個鍵的value值,判斷value是否等于空,如果為空将value指派為1,并将鍵和值添加到集合中,如果value不等于1,即value++,并将鍵值添加到集合中。
  • 建立容器StringBuilder 來儲存集合的鍵和值,通過keySet()方法來擷取鍵(key),通過get(key)擷取 ( value )。并通過append()方法把鍵和值添加到容器中。
  • 最後使用toString()方法将容器轉換為String類型

代碼實作

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class Test03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入字元串");
        String str = sc.nextLine();

        TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

        for (int i=0;i<str.length();i++){
            char key = str.charAt(i);
            Integer value = tm.get(key);
            if (value == null){
                tm.put(key,1);
            }else{
                value++;
                tm.put(key,value);
            }
        }

        StringBuilder st = new StringBuilder();
        Set<Character> keys = tm.keySet();
        for (Character k : keys){
            Integer i = tm.get(k);
            st.append(k).append("[").append(i).append("]");
        }
        String s = st.toString();
        System.out.println(s);
    }
}

           

運作結果

統計字元串中每個字元出現的次數(TreeMap實作)