黑马程序员技术交流社区
标题:
TreeMap<k,V>如何根据值来排序?
[打印本页]
作者:
李节起
时间:
2012-4-11 22:44
标题:
TreeMap<k,V>如何根据值来排序?
TreeMap<k,V>如何根据值来排序?
TreeMap<K,V>默认是用键key按自然顺序来排序的,
现有类TreeMap<Character,Interger>,这个类按键的字母顺序给元素排序,那怎样按其Interger类型的value值排序呢?
文档中TreeMap有构造方法能根据给定的比较器排序,如何实现?
作者:
黑马张平
时间:
2012-4-11 22:53
这个问题我想过,不过我也不知道怎么做,求大神帮忙!
作者:
newlaw2013
时间:
2012-4-11 23:38
文档中TreeMap有构造方法能根据给定的比较器排序,public TreeMap(Comparator<? super K> comparator)
这个比较器还是对集合中的键进行排序的,要想按照value来排序,我的思路:
Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();//将TreeMap转成entrySet
然后定义一个List集合,集合中存储的对象是tm集合中键值对。用迭代的方法拿到键值对对象(Map.Entry类型),作为一个单独的键值对对象,可以通过getKey和getValue
方法获取键和值,再定义比较器就可以方便地按你想要的方式排序了。参考代码:
class MyComparator implements Comparator<Map.Entry<Character,Integer>>
{
public int compare(Map.Entry<Character,Integer> o1,Map.Entry<Character,Integer> o2)
{
if(o1.getValue()==o2.getValue())//当value相同时,用key进行比较排序。
{
return o1.getKey().compareTo(o2.getKey());
}else{
return o1.getValue() - o2.getValue();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2