Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例

1. 首先我们看看统计字符串中每个字符出现的次数的案例图解:

2. 代码实现:

(1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

分析:
   A 定义一个字符串(可以改进为键盘录入)
   B 定义一个TreeMap集合
            键 Character
            值:Integer
   C 把字符串转换为字符数组
   D: 遍历字符数组,得到每一个字符
   E: 拿刚才得到的字符作为键到集合中去找值,看返回值
                是null说明该键不存在,就把该字符作为键,1作为值存储
             不是null说明该键存在,就把值加1,然后重写存储该键和值
   F: 定义字符串缓冲区变量
   G遍历集合,得到键和值,进行按照要求拼接
   H把字符串缓冲区转换为字符串输出

 录入:linqingxia
 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)

(2)代码实现:

 1 package cn.itcast_05;
 2 
 3 import java.util.Scanner;
 4 import java.util.Set;
 5 import java.util.TreeMap;
 6 
 7 /*
 8  * 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
 9  * 
10  * 分析:
11  *         A:定义一个字符串(可以改进为键盘录入)
12  *         B:定义一个TreeMap集合
13  *             键:Character
14  *             值:Integer
15  *         C:把字符串转换为字符数组
16  *         D:遍历字符数组,得到每一个字符
17  *         E:拿刚才得到的字符作为键到集合中去找值,看返回值
18  *             是null:说明该键不存在,就把该字符作为键,1作为值存储
19  *             不是null:说明该键存在,就把值加1,然后重写存储该键和值
20  *         F:定义字符串缓冲区变量
21  *         G:遍历集合,得到键和值,进行按照要求拼接
22  *         H:把字符串缓冲区转换为字符串输出
23  * 
24  * 录入:linqingxia
25  * 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
26  */
27 public class TreeMapDemo {
28     public static void main(String[] args) {
29         // 定义一个字符串(可以改进为键盘录入)
30         Scanner sc = new Scanner(System.in);
31         System.out.println("请输入一个字符串:");
32         String line = sc.nextLine();
33 
34         // 定义一个TreeMap集合
35         TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
36         
37         //把字符串转换为字符数组
38         char[] chs = line.toCharArray();
39         
40         //遍历字符数组,得到每一个字符
41         for(char ch : chs){
42             //拿刚才得到的字符作为键到集合中去找值,看返回值
43             Integer i =  tm.get(ch);
44             
45             //是null:说明该键不存在,就把该字符作为键,1作为值存储
46             if(i == null){
47                 tm.put(ch, 1);
48             }else {
49                 //不是null:说明该键存在,就把值加1,然后重写存储该键和值
50                 i++;
51                 tm.put(ch,i);
52             }
53         }
54         
55         //定义字符串缓冲区变量
56         StringBuilder sb=  new StringBuilder();
57         
58         //遍历集合,得到键和值,进行按照要求拼接
59         Set<Character> set = tm.keySet();
60         for(Character key : set){
61             Integer value = tm.get(key);
62             sb.append(key).append("(").append(value).append(")");
63         }
64         
65         //把字符串缓冲区转换为字符串输出
66         String result = sb.toString();
67         System.out.println("result:"+result);
68     }
69 }

运行效果,如下:

原文地址:https://www.cnblogs.com/hebao0514/p/4865713.html