黑马程序员技术交流社区

标题: 计算一下字符串cbxzbvavdvgd,里面各个字母的个数 [打印本页]

作者: lockwood    时间: 2015-5-22 21:35
标题: 计算一下字符串cbxzbvavdvgd,里面各个字母的个数
//采用的是TreeMap集合的方法来做的,总体思路就是 将这个字符串为字符数组,然后,定义一个空集合,把字符定义为key,个数定义为values,将字符串中的每一个元素拿出来同集合中的key进行比较,如果值为空,则把这个元素和1分别赋值给这个TreeMap集合,如果相同,就给这个集合的values的值加1。最后再把数组转化为字符串。就能得到每个字符出现的次数。

public class TreeMapDemo {
        public static void main(String[] args) {
                String s = "cbxzbvavdvgd";

                // 把字符串变成字符数组。
                char[] chs = s.toCharArray();

                // 定义一个TreeMap集合。Character做键,Integer做值。
                TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

                // 遍历字符数组,获取到每一个字符。
                for (Character ch : chs) {
                        // 拿到该字符,到TreeMap集合中找对应的值
                        Integer i = tm.get(ch);

                        // 根据返回值是否为null
                        // 是:存储,把次数记录为1
                        // 否:把数据++,然后重写存储
                        if (i == null) {
                                tm.put(ch, 1);
                        } else {
                                i++;
                                tm.put(ch, i);
                        }
                }

                // System.out.println(tm);

                // 把TreeMap的数据拼接成一个字符串。
                StringBuilder sb = new StringBuilder();
                Set<Character> set = tm.keySet();
                for (Character ch : set) {
                        Integer i = tm.get(ch);
                        sb.append(ch).append("(").append(i).append(")");
                }

                String result = sb.toString();
                System.out.println(result);
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2