首页 > 学院 > 开发设计 > 正文

Map集合重要练习

2019-11-15 01:16:05
字体:
来源:转载
供稿:网友
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);        }}        


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表