黑马程序员技术交流社区

标题: map集合小练习分享 [打印本页]

作者: kemeng    时间: 2015-3-20 14:18
标题: map集合小练习分享

  1. /*
  2. "sdfzxcvafadfadfads"获取该字符串中的字母出现的次数
  3. 希望打印结果:a(1)c(2)...

  4. 通过结果发现,每一个字母都有对应的次数,字母和次数之间有映射关系
  5. 所以可以选择map集合,因为map集合中存放的就是映射关系

  6. 1.将字符串转换为字符数组,以为要对每一个字母进行操作。
  7. 2.定义一个map集合,因为打印结果的字母有顺序,所以使用treemap
  8. 3.遍历字符数组,将每一个字母作为键去查map集合
  9. 如果返回null,将该字母和1存入到map集合中
  10. 如果返回不是null,说明该字母在map集合已经存在并有对应次数
  11. 那么就获取该次数并进行自增,然后将该字母和自增后的次数存入到map集合中,覆盖调用原理键所对应的值
  12. 4.将map集合中的数据变成指定的字符串形式返回


  13. */
  14. import java.util.*;
  15. class Demo4
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 System.out.println(charCount("aabbccddffrs"));
  20.         }

  21.         public static String charCount(String str)
  22.         {
  23.                 char[] chs=str.toCharArray();
  24.                 TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
  25.                 for(int i=0;i<str.length();i++)
  26.                 {
  27.                         Integer value=tm.get(chs[i]);
  28.                         if(value==null)
  29.                         {
  30.                                 tm.put(chs[i],1);
  31.                         }
  32.                         else
  33.                         {
  34.                                 value++;
  35.                                 tm.put(chs[i],value);
  36.                         }
  37.                        
  38.                 }
  39.                 //System.out.println(tm);
  40.                
  41.                 StringBuilder sb=new StringBuilder();
  42.                 Set<Map.Entry<Character,Integer>> ss=tm.entrySet();
  43.                 Iterator<Map.Entry<Character,Integer>> it=ss.iterator();
  44.                 while(it.hasNext())
  45.                 {
  46.                         Map.Entry<Character,Integer> tr=it.next();
  47.                         Character ch=tr.getKey();
  48.                         Integer value=tr.getValue();
  49.                         sb.append(ch+"("+value+")");
  50.                 }


  51.                 return sb.toString();
  52.         }
  53. }
复制代码







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