JavaSE-16.1.4【案例-统计字符串中每个字符出现的次数】

 

 

 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 }

 

posted @ 2021-06-02 16:29  yub4by  阅读(119)  评论(0编辑  收藏  举报