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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 帅气的冬瓜 中级黑马   /  2013-11-5 18:34  /  1142 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 帅气的冬瓜 于 2013-11-5 23:17 编辑

           当输入一串字符串,要获取每个字母的次数, 关于下面这几句代码,没理解过来   
          1 将每一个字母作为键去map集合
          2  如果返回null,将该字母和”1“存入到map中
          3  如果返回不是null,说明该字母在map集合中已经存在并有对应次数。那么就获取该次数并进行自增。
                    import java.util.*;
                   class  MapTest
                   {
                         public static void main(String[] args)
                          {
                                 String s=charCount("abcdhbavcdcb");
                                 System.out.println(s);
                          }
                          public static String charCount(String str)
                         {
                                  char[] chs=str.toCharArray( );
                                  TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
                                  int count=0;
                                    for(int x=0;x<chs.length;x++)
                                    {
                                           if (!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z'))
                                                      continue;
                                          Integer value=tm.get(chs[x]);
                                        if (value!=null)
                                                   count=value;
                                         count++;
                                         tm.put(chs[x],count);
                                         count=0;                               //清零之后,count++;是否变化,value是否变化。是怎样循环的?
                                     }

                                          StringBuilder sb=new StringBuilder();
                                          Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
                                          Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
                                          while(it.hasNext())
                                             {
                                                     Map.Entry<Character,Integer> me=it.next();
                                                     Character ch=me.getKey();
                                                      Integer value=me.getValue();
                                                      sb.append(ch+"("+value+")");
                                              }
                                         return sb.toString();
                   }
}      
我问的就是当count=0;清零之后,value 和 count++ 的值有什么变化?具体点,谢了!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
表示没看懂楼主说的第一次清零是啥意思,发一下我写的吧,希望有帮助
public static void main(String[] args)
        {
                char[] ch = null;
                TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>(new MyComparator());
                //IO没学到,暂代
                String s = "dds34573524jfsjjfs*(^&%^%";
                //将字符串转化为数组。
                ch = s.toCharArray();
                for (int x=0;x<s.length() ;x++ )
                {
                        //获取value值
                        Integer count = tm.get(ch[x]);
                        //判断集合中是否存在该键值
                        if (count== null)
                        {
                                tm.put(ch[x],1);
                        }
                        else
                                //因为Map集合键值唯一,可以用新值替换,达到累计目的
                                tm.put(ch[x],count+1);
                }

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
value不变,count++相当于count=count+1,
你这个代码应该是在一个循环里,所以Integer value 每次定义的是一个不同的value变量,相当于默认直接清0了
count目测没什么存在的必要
回复 使用道具 举报
寻丶丶觅 发表于 2013-11-5 18:51
表示没看懂楼主说的第一次清零是啥意思,发一下我写的吧,希望有帮助
public static void main(String[] ar ...

我又把程序谢了一遍,你写的if语句我看懂了,这个是if的简写,我还是不太懂,每次变化的值是怎么样的?关键是这点!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马