黑马程序员技术交流社区

标题: Map的值排序 [打印本页]

作者: 王亮    时间: 2011-7-19 12:46
标题: Map的值排序
Map有key和value,我们可以实现按key排序,怎样实现按value排序?
作者: 匿名    时间: 2011-7-19 12:53
[url]http://blog.csdn.net/chjshan55/article/details/6153554[/url]
这个里面挺详细的
作者: 匿名    时间: 2011-7-19 17:51
[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
标题: 回复 沙发 的帖子
谢谢你了,我最近查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();

不知能否进一部改进?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2