黑马程序员技术交流社区

标题: 使用集合获取字符串中每个字符出现的次数的小问题 [打印本页]

作者: 陈洋洋    时间: 2012-6-24 00:39
标题: 使用集合获取字符串中每个字符出现的次数的小问题
本帖最后由 陈洋洋 于 2012-6-24 19:52 编辑

public static void main(String[] args) {
                String str = "zzzuuuzzkdfjklsdjfksdzzkgasdfgsdgreguyguysdfguygfwzzzegsdfhjgjhcv";
                HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
               
                char[] ch = str.toCharArray();
                for (char c : ch) {
                        Integer value = hashMap.get(c);//这里道理是怎么获得value值的?都没有把字符串存到集合中...? 有点纠结..
                        int times = 0;                          //还有这个地方,为什么不把这个次数放在for循环的外面呢?如果放在这那次数每次进入for循环不都变成0了?.
                        if (value == null) {
                                times = 1;
                        } else {
                                int num = value;
                                times = num + 1;
                        }
                        hashMap.put(c, times);
                }
                System.out.println(hashMap);
}




上课的时候听懂了,自己在做练习的时候有点迷惑...感觉并没有像老师那样来去自如...
作者: 周兴中    时间: 2012-6-24 01:02
本帖最后由 周兴中 于 2012-6-24 01:27 编辑

public static void main(String[] args) {
                String str = "zzzuuuzzkdfjklsdjfksdzzkgasdfgsdgreguyguysdfguygfwzzzegsdfhjgjhcv";
                HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
               
                char[] ch = str.toCharArray();
                for (char c : ch) {
                        Integer value = hashMap.get(c);//这句话的意思是在map集合中查找char c这个字符键所对应的值,如果为null,就说明c第一次出现,就把times赋值为1,然后把<c,1>键值对存入map集合中,当下次再出现该c时,查找到c所对应的值即为1,此时times加1,然后将<c,times+1>存入集合,以此类推,最后集合中存的就是每个字符出现的次数,输出即可.
                        int times = 0;                   //这句话在你这个函数里没必要,因为times在下面的语句中必然会被重新赋值.  可以放在 for语句之前.                  
                if (value == null)
                 {
                                times = 1;
                   }
                else {
                                int num = value; //
                                times = num + 1;//这两句冗余, 写成这样 times = value +1;即可
                        }
                        hashMap.put(c, times);
                }
                System.out.println(hashMap);
}

作者: 陈洋洋    时间: 2012-6-24 19:47
周兴中 发表于 2012-6-24 01:02
public static void main(String[] args) {
                String str = "zzzuuuzzkdfjklsdjfksdzzkgasdf ...

啊~ 看了你的讲解..恍然大悟呀...谢谢...期待和你在黑马相遇...




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