zxy0307's picture
Upload 2300 files
0284885 verified
Raw History Blame Contribute Delete
2.01 kB
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);
}
}