黑马程序员技术交流社区
标题:
TreeMap怎么实现对value排序?
[打印本页]
作者:
罗杰
时间:
2012-4-19 17:49
标题:
TreeMap怎么实现对value排序?
TreeMap<key,value>
听课的时候没有注意,用到才发现TreeMap使用Comparator只能对key进行排序,有没有对value排序的方发呢?
也上网搜了,没有什么好答案
作者:
τ、高童鞋ゝ
时间:
2012-4-19 17:53
可以借助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())); }
作者:
liuyang
时间:
2012-4-19 22:32
TreeMap如不指定排序器,默认将按照key值进行升序排序,如果指定了排序器,则按照指定的排序器进行排序。
具体的排序规则,可以在int compare()方法中进行指定。
作者:
黑马-刘昌文
时间:
2012-4-19 22:50
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排序!
作者:
黑马—王宁
时间:
2012-4-19 23:04
首先TreeMap是按key排序的
如果要按value排序,就不能用TreeMap
假设TreeMap是按Value排序的,一点用处都没有,没有key值你怎么获得value?
要么换种别的容器,ArrayList,再用Collections.sort()就OK了
作者:
黑马罗坚
时间:
2012-4-19 23:08
关于排序 很多对象都会提供sort()方法 你可以试下 对象名.sort();看下该对象有没有实现排序功能 数组排序是用的Arrays类 没有实现 就可以自己实现下
作者:
τ、高童鞋ゝ
时间:
2012-4-19 23:28
THANK YOU ! 斑竹!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2