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 }