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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王亮 黑马帝   /  2011-7-19 12:46  /  2673 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Map有key和value,我们可以实现按key排序,怎样实现按value排序?

3 个回复

倒序浏览
黑马网友  发表于 2011-7-19 12:53:47
沙发
[url]http://blog.csdn.net/chjshan55/article/details/6153554[/url]
这个里面挺详细的
回复 使用道具 举报
黑马网友  发表于 2011-7-19 17:51:12
藤椅
[quote] 原帖由 [i]王亮[/i] 于 2011-07-19 12:46 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=3955&ptid=290][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]Map有key和value,我们可以实现按key排序,怎样实现按value排序? [/quote]

时间紧迫,要回去煮饭了。你用“冒泡排序”试试,代码改天贴上
回复 使用道具 举报
黑马网友  发表于 2011-7-20 17:26:38
板凳

回复 沙发 的帖子

谢谢你了,我最近查API找到了另外一个方法,将TreeMap的entrySet-->Object数组(toArray()方法)-->使用Arrays.sort()(确切的是<T> void sort(T[] a, Comparator<? super T> c)),本来应该用泛型的,但是老没有试成功,就没有使用直接使用Object。

        Object[] t= treeMap.entrySet().toArray();
                Arrays.sort(t,
                                new Comparator() {

                                        @Override
                                        public int compare(Object o1, Object o2) {
                                                // TODO Auto-generated method stub
                                                return ((Map.Entry<Character, Integer>)o1).getValue()-((Map.Entry<Character, Integer>)o2).getValue();  
                                        }
                                });
                StringBuffer sb = new StringBuffer();
                for(int i=0;i<t.length;i++){
                        sb.append(((Map.Entry<Character,Integer>)t[i]).getKey()+" : "+((Map.Entry<Character,Integer>)t[i]).getValue()+",");
                }
                sb.deleteCharAt(sb.length()-1);
                return sb.toString();

不知能否进一部改进?

评分

参与人数 1技术分 +2 收起 理由
admin + 2 这才是学习的精神

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马