
1 package day7.lesson1.anli5;
2
3 import java.util.*;
4
5 /*
6 1.5.5 案例-统计字符串中每个字符出现的次数
7 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
8 举例:键盘录入“aababcabcdabcde” 在控制台输出:“a(5)b(4)c(3)d(2)e(1)”
9
10 分析:
11 可将输出结果分成几部分来看:a(5),b(4),c(3),d(2),e(1)
12 每部分由字符和字符出现的次数组成
13 通过HashMap集合来存储:键是字符,值是字符出现的次数
14 注意:<>泛型中只能放引用数据类型
15 所以要用基本数据类型的包装类
16 char --> Character int --> Integer
17 */
18 public class HashMapDemo {
19 public static void main(String[] args) {
20 Scanner sc = new Scanner(System.in);
21 System.out.println("请输入字符串:");
22 String input = sc.nextLine();
23
24 // HashMap<Character, Integer> hashMap = new HashMap<>(); //无序
25 TreeMap<Character, Integer> hashMap = new TreeMap<>(); //有序
26
27 for (int i=0; i<input.length(); i++){
28 char key = input.charAt(i);
29 Integer value = hashMap.get(key); //自动装箱,char-->Character
30 if(value == null){ //说明该字符再HashMap集合中不存在
31 hashMap.put(key, 1); //字符第一次出现,值(次数)为1
32 }else { //说明该字符再HashMap集合中已存在
33 value++; //值(字符出现次数)+1
34 hashMap.put(key, value); //覆盖掉原值(原来次数)
35 }
36 }
37
38 StringBuilder sb = new StringBuilder();
39 Set<Character> keySet = hashMap.keySet();
40 for (Character key: keySet){
41 Integer value = hashMap.get(key);
42 sb.append(key).append("(").append(value).append(")");
43 }
44 String result = sb.toString();
45 System.out.println(result);
46 }
47 }