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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© linuxpara910829 中级黑马   /  2015-2-14 17:03  /  1111 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test1{
        public static void main(String [] args){
                String str = "abcdekka27qoq";
                Map<Character, Integer> map = new TreeMap<Character, Integer>();
                map = strToMap(map,str);
                printMap(map);
        }
        public static Map<Character, Integer> strToMap(Map<Character, Integer> map,String str){
                char [] chs = str.toCharArray();
                for(int index=0;index<chs.length;index++){
                        if(!(map.containsKey(chs[index]))){
                                map.put(chs[index],1);
                        }
                        else{
                                int value = map.get(chs[index]);
                                map.put(chs[index],++value);
                        }
                }
                return map;
        }
        public static void printMap(Map<Character,Integer> map){
                Set<Map.Entry<Character,Integer>> set = map.entrySet();
                Iterator<Map.Entry<Character,Integer>> it = set.iterator();
                while(it.hasNext()){
                        char key = it.next().getKey();
                        int value = it.next().getValue();
                        System.out.println(key+"("+value+")");
                }
        }
}

6 个回复

倒序浏览
问题解决了  我用keyset取出就没问题  为什么我用entryset取出的时候会丢东西呢?
回复 使用道具 举报
一点注释也没有啊这时
回复 使用道具 举报
strToMap() 方法得到想要的结果了,但是打印出来的却不是自己得到的结果,问题在这里:
  1. while(it.hasNext()){
  2.                         char key = it.next().getKey();
  3.                         int value = it.next().getValue();
  4.                         System.out.println(key+"("+value+")");
  5.                 }
复制代码

char key=it.next().getKey();  如果是取出map集合中的第一个键的话,如a ,那下一句:int value=it.next().getValue(); 取出的则是下一个键映射的value值了。。。,如 b 的value.

  1. while(it.hasNext()){
  2.                         Map.Entry<Character,Integer> me=it.next();
  3.                         char key = me.getKey();
  4.                         int value = me.getValue();
  5.                         System.out.println(key+"("+value+")");
  6.                 }
复制代码

这样就可以得到结果了
回复 使用道具 举报
嗯  谢谢你   太对了 , 我为了省事,没那么写结果出了问题自己也查不出来
回复 使用道具 举报
我给你从写了一个。
  1. package pack;
  2. import java.util.*;
  3. class MaoTest3{
  4.         public static void main(String[] args){
  5.                 charCount("abcdekka27qoq");
  6.         }
  7.         public static String charCount(String s){
  8.                 char[] chs=s.toCharArray();
  9.                 TreeMap<Character,Integer>tm=new TreeMap<Character,Integer>();
  10.                 int count=0;
  11.                 for(int x=0; x<chs.length; x++){
  12.                         if(!(chs[x]>='a'&&chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z'))
  13.                                 continue;
  14.                         Integer value=tm.get(chs[x]);
  15.                         if(value!=null)
  16.                                 count=value;
  17.                         count++;
  18.                         tm.put(chs[x],count);
  19.                         count=0;
  20.                 }
  21.                 System.out.println(tm);
  22.                 StringBuilder sb=new StringBuilder();
  23.                 Set<Map.Entry<Character,Integer>>entry=tm.entrySet();
  24.                 Iterator<Map.Entry<Character,Integer>>it=entry.iterator();
  25.                 while(it.hasNext()){
  26.                         Map.Entry<Character,Integer>me=it.next();
  27.                         Character key=me.getKey();
  28.                         Integer value=me.getValue();
  29.                         sb.append(key+"("+value+")");
  30.                 }
  31.                 return sb.toString();
  32.         }
  33. }
复制代码
回复 使用道具 举报
好复杂啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马