A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

陈洋洋

初级黑马

  • 黑马币:0

  • 帖子:13

  • 精华:0

本帖最后由 陈洋洋 于 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);
}




上课的时候听懂了,自己在做练习的时候有点迷惑...感觉并没有像老师那样来去自如...

2 个回复

倒序浏览
本帖最后由 周兴中 于 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 01:02
public static void main(String[] args) {
                String str = "zzzuuuzzkdfjklsdjfksdzzkgasdf ...

啊~ 看了你的讲解..恍然大悟呀...谢谢...期待和你在黑马相遇...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马