File size: 2,011 Bytes
0284885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package TreeMap_package2;

import java.util.StringJoiner;
import java.util.TreeMap;
import java.util.function.BiConsumer;

public class TreeMap_demo3 {
    public static void main(String[] args) {
        /*
        需求:字符串"abcbbbaaacccbabcabc"
            请统计字符串中每个字符出现的次数,并按照以下格式输出
            输出结果:
                a(6)b(7)c(6)
        新的统计思想:利用map集合进行统计
            如果题目中没有要求对结果进行排序,默认使用HashMap
            如果题目中要求对结果进行排序,请使用TreeMap

            键:表示要统计的内容
            值:表示次数
         */

        //1、定义字符串
        String s = "abcbbbaaacccbabcabc";

        //2、创建集合
        TreeMap<Character, Integer> tm = new TreeMap<>();

        //3、遍历字符串得到里面的每一个字符
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            //拿着c到集合中判断是否存在
            //存在,表示当前字符又出现了一次
            //不存在,表示当前字符是第一次出现
            if (tm.containsKey(c)) {
                //存在
                //先把已经出现的次数拿出来
                int count = tm.get(c);
                //当前字符又出现了一次
                count++;
                //把自增之后的结果再添加到集合当中
                tm.put(c, count);
            } else {
                //不存在
                tm.put(c, 1);
            }
        }

        //4、遍历集合,并按照指定的格式进行拼接
        StringBuilder sb = new StringBuilder();

        tm.forEach(new BiConsumer<Character, Integer>() {
            @Override
            public void accept(Character key, Integer value) {
                sb.append(key).append("(").append(value).append(")");
            }
        });
        System.out.println(sb);

    }
}