統計字元串中每個字元出現的次數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);
}
}
運作結果
