(74)TreeMap练习:求字符串中每个字符出现的次数(键值对:字符---次数)
什么时候使用map集合呢? 
当数据之间存在映射关系时,就要先想到map集合
需求:获取字符串中的字母出现的次数 
希望打印结果为:a(1) c(2)….. 
通过结果发现,每一个字母都有对应的次数,说明字母和次数之间存在映射关系。 
思路: 
1、将字符串转换为字符数组,因为要对每个字母进行操作。 
2、定义一个map集合,因为打印结果字符有顺序,所以使用treemap集合。 
3、遍历字符数组 
 3.1 将每一个字母作为键去查map集合 
  3.2如果返回为null,说明集合中没有这个元素,应该将字母和1存入到map集合中。 
  3.3如果返回的不是null,说明该字母在map集合中已经存在,并且有对应的次数,那   么就应该获得这个次数,并进行自增,然后将该字母和 自增后的次数存入到map集合中,覆盖调原来键对应的值。 
 4、将map集合中的数据变成指定的字符串形式返回
public class StringLength {
    public static TreeMap everCharLen(String str) {
        TreeMap<Character,Integer> map=new TreeMap<Character,Integer>();
        for(int i=0;i<str.length();i++) {
            char temp=str.charAt(i);
            if(!map.containsKey(temp)) {
                map.put(temp, new Integer(1));
            }
            else {
                int count=map.get(new Character(temp));
                count++;
                map.put(new Character(temp), count);
            }
        }
        return map;
    }
    public static void main(String[] args) {
        String str="abcdbcddca";
        TreeMap<Character,Integer> map=new TreeMap<Character,Integer>();
        map=everCharLen(str);
        Set<Character> s=map.keySet();
        Iterator<Character> it=s.iterator();
        while(it.hasNext()) {
            char ch=it.next();
            Character ch1=new Character(ch);
            System.out.println(ch+"("+map.get(ch1)+")");
        }
    }
}
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号