你的位置:首页 > Java教程

[Java教程]Map集合重要练习


重要练习:将字符串中的字母按如下格式显示:

a(1)b(2)......

代码及思路如下:

/*获取字符串中字母的次数,并打印出如下格式a(1)b(2)c(3)......思路:先定义一个方法,将该功能进行封装.1.首先将字符串转换成字符数组 方法是toCharArray();2.定义一个map容器用来接收每个字符, 因为结果是有序的可以使用TreeMap3.遍历字符数组 for循环.  将字母作为 键 去map集合中去查询该字母,如果返回null,说明map集合中没有该字母,那么将该字母和1存入到map集合中去,  如果返回的不是null,说明此时的map集合中已经有了该字母,那么在map集合中该字母对应的次数自增1,然后将该字母和自增后的次数存入到map集合中去.  存入后会覆盖原先的次数.3将map集合中的数据按指定形式打印出来  指定形式:  1.定义一个容器.StringBuilder缓冲区可以存放任何数据的形式,通过Map集合的KeySet方法或者entrySet方法获取map集合中的键值或者其映射关系  通过keySet的get(key)方法获取map集合中的value 或者entrySet的方法getKey()方法和getValue()方法获取对应的键和值.    2.最后将键和值通过 StringBuilder的append方法添加进缓冲区,并打印. 由于StringBuilder和String不是同一个类,因此return sb的时候需要  写上toString--->return sb.toString();*/import java.util.*;class MapCharTest{  public static void main(String [] args)  {    String s = myCharCount("aabbccddedsf");    sop(s);  }    public static String myCharCount(String str)  {    //将字符串转换成字符数组    char [] chs = str.toCharArray();        //定义一个map集合    TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();        //遍历字符数组    for(int x = 0; x<chs.length; x++)    {      //将字母作为 键 去查找对应的 值      Integer value = tm.get(chs[x]);            //去除不是字母的其他字符.      if(!(chs[x]>='a'&&chs[x]<='z' || chs[x]>='A'&& chs[x]<='Z'))        continue;                    //判断 值 是否存在      if(value==null)        tm.put(chs[x],1);      else      {        value = value+1;        tm.put(chs[x],value);      }    }  //  sop(tm);        //创建一个缓冲区    StringBuilder sb = new StringBuilder();        /*    //第一种Map取出方式 keySet方法    Set<Character> keySet = tm.keySet();        迭代set集合中的键集    Iterator<Character> it = keySet.iterator();        while(it.hasNext())    {      Character key = it.next(); //获取键      Integer value = tm.get(key); //通过键获取对应的 值            sb.append(key+"("+value+")"); //将键和值添加进缓冲区中          }    */      //Map集合第二种取出方式:entrySet    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 key = me.getKey();      Integer value = me.getValue();            sb.append(key+"("+value+")");    }        return sb.toString(); //将StringBuilder按String形式打印出来.    }    public static void sop(Object obj)  {    System.out.println(obj);    }}