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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗杰 中级黑马   /  2012-4-19 17:49  /  4076 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

TreeMap<key,value>
听课的时候没有注意,用到才发现TreeMap使用Comparator只能对key进行排序,有没有对value排序的方发呢?
也上网搜了,没有什么好答案

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

6 个回复

倒序浏览
可以借助ArrayList,用Collections.sort()方法来对ArrayList排序,从而实现效果

// 将TreeMap中的元素放到ArrayList中
ArrayList<Map.Entry<Integer, Double>> tmList = newArrayList<Map.Entry<Integer, Double>>(tm.entrySet());  
// 利用Collections.sort方法排序
Collections.sort(tmList, newComparator<Map.Entry<Integer, Double>>() {     @Override  publicintcompare(Map.Entry<Integer, Double> o1,    Map.Entry<Integer, Double> o2) {     returno2.getValue().compareTo(o1.getValue());   } });   
// 输出排序后的数据
for(Map.Entry<Integer, Double> entry : tmList) {   System.out.println(String.format("Key : %d, Value : %f", entry.getKey(), entry.getValue())); }

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
TreeMap如不指定排序器,默认将按照key值进行升序排序,如果指定了排序器,则按照指定的排序器进行排序。

具体的排序规则,可以在int compare()方法中进行指定。
回复 使用道具 举报
TreeMap map = new TreeMap;
ArrayList<Map.Entry<Character, Integer>> infoIds = new ArrayList<Map.Entry<Character, Integer>>(map.entrySet());
Collections.sort(infoIds, new Comparator<Map.Entry<Character, Integer>>() {
                                        public int compare(Map.Entry<Character, Integer> o1,
                                                        Map.Entry<Character, Integer> o2) {
                                                return (o1.getValue() - o2.getValue());
                                        }
                                });
把TreeMap转换成ArrayList,再对ArrayList排序!

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
首先TreeMap是按key排序的
如果要按value排序,就不能用TreeMap
假设TreeMap是按Value排序的,一点用处都没有,没有key值你怎么获得value?
要么换种别的容器,ArrayList,再用Collections.sort()就OK了

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
关于排序 很多对象都会提供sort()方法  你可以试下 对象名.sort();看下该对象有没有实现排序功能  数组排序是用的Arrays类  没有实现 就可以自己实现下
回复 使用道具 举报
THANK YOU !  斑竹!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马