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 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() { @Override public void accept(Character key, Integer value) { sb.append(key).append("(").append(value).append(")"); } }); System.out.println(sb); } }