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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

毕老师视频里讲的关于提取字符串中字母出现个数的程序,可运行,但是自己还是不能完全掌握

/*
记录字符串中字母出现的次数

1.因为操作的是字符串中的字母,现将字符串转换成字符数组
2.便利字符数组,用每一个字母作为键去差Map集合这个表
如果字母键不存在,将该字母作为键1作为值存储到map集合中
如果该字母存在,就将该字母键对应值取出并+1,将该字母和+1后的
值存储到Map集合中,键相同时值会覆盖,map集合就记录所有字母出现的次数
*/
import java.util.Map;
import java.util.TreeMap;
import java.util.Iterator;
import java.*;
public class MapTest
{
        public static void main(String[] args)
        {
                String str="vasldfjwoijgsdjgfa";
                String s=getCharCount(str);
                System.out.println(s);
        }
        public static String getCharCount(String str)
        {
                //将字符串变成字符数组
                char[] chs=str.toCharArray();
                //定义Map集合表
                Map<Character,Integer> map=new TreeMap<Character,Integer>();
                int count=1;
                for(int i=0;i<chs.length;i++)
                {
                       
                        //将数组中的字母作为键去查表
                        Integer value=map.get(chs[i]);
                        //判断值是否为null
                        if(value!=null)
                        {
                                count =value+1;
                        }
                        map.put(chs[i],count);
                        /*if(value==null)
                        {
                                map.put(chs[i],1);
                        }else{
                                map.put(chs[i],value+1);
                        }*/

                         
                }
                return maptoString(map);

        }
        private static String maptoString(Map<Character,Integer>map){
       
        StringBuilder sb=new StringBuilder();
        Iterator<Character> it=map.keySet().iterator();
        while(it.hasNext()){
                Character key=it.next();
                Integer value =map.get(key);
                sb.append(key+"("+value+")");
        }
        return sb.toString();
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马