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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 yufeiant 于 2012-7-10 00:38 编辑


import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Test3 {
//        统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。
//           例如:c : 1,e : 1,d : 2,f : 2,b : 3,a : 4
//        思路:把这个字符串转化为字符数组,然后便利所有的数组,把每个元素取出,建立一个TreeMap集合对象,把每个元素作为键放入TreeMap
        //对象中,如果集合中没有这个元素,那么键值对的值加一并和这个这个元素一起存储到TreeMap集合中,如果有了就不存入这个元素,把所有的
        //的元素都都放到集合中,然后把这个集合装换成字符串
        public static void main(String[] args) {
                String str = "c : 1,e : 1,d : 2,f : 2,b : 3,a : 4";
                TreeMap<Character, Integer> tm = gerTreeMap(str);
                StringBuffer ss = ToStringTreeMap(tm);
                System.out.println(ss);


        }
        public static  TreeMap<Character, Integer> gerTreeMap(String str){
                TreeMap<Character, Integer> tr = new TreeMap<Character,Integer>();
                char [] arr = str.toCharArray();
                for(int  x = 0;x<arr.length;x++)
                {
                        char c = arr[x];
                        Integer i = tr.get(c);
                        if(!tr.containsKey(c))
                        {
                                tr.put(c, 1);
                        }
                        else{
                                i++;
                                tr.put(c, i);
                        }
                        
                }
                return tr;}
        public static StringBuffer ToStringTreeMap(TreeMap<Character, Integer> tr)
        {
                //对集合进行转换,把其转换为字符串,在转换的同时把其他的都吸添加进去
                StringBuffer sbf = new StringBuffer();
                Set<Map.Entry<Character,Integer>> st = tr.entrySet();
                Iterator<Map.Entry<Character,Integer>> it  = st.iterator();
                while(it.hasNext()){
                        Map.Entry<Character,Integer> mp = it.next();
                        Character key = mp.getKey();
                        Integer value = mp.getValue();
                        sbf.append(key).append(":").append(value);
                }
                return sbf;        
        }
}
运行结果却是这样,当时就崩溃了:121:22:23:14:1::6a:1b:1c:1d:1e:1f:1,:5


点评

传入的字符串都错了。  发表于 2012-7-10 14:15

7 个回复

倒序浏览
求帮忙  谢谢
回复 使用道具 举报
哥们问题找到了  ,你们找到了吗???
回复 使用道具 举报
本帖最后由 王亚男 于 2012-7-10 00:34 编辑
yufeiant 发表于 2012-7-10 00:28
哥们问题找到了  ,你们找到了吗???


String str = "c : 1,e : 1,d : 2,f : 2,b : 3,a : 4";

第一,这个字符串您写错了……应该是传“abadcdffbaeba”吧。。

第二,加个排序方式就行了。
回复 使用道具 举报
呵呵   还有哥们回呢?干嘛要加排序方式啊?
回复 使用道具 举报
yufeiant 发表于 2012-7-10 00:38
呵呵   还有哥们回呢?干嘛要加排序方式啊?

上面要求不是要按次数排序输出么……
回复 使用道具 举报
孙飞 中级黑马 2012-7-10 00:50:05
7#
字符串改正解就欧了
回复 使用道具 举报
额  我好2啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马