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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李节起 中级黑马   /  2012-4-11 22:44  /  1791 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

TreeMap<k,V>如何根据值来排序?
TreeMap<K,V>默认是用键key按自然顺序来排序的,
现有类TreeMap<Character,Interger>,这个类按键的字母顺序给元素排序,那怎样按其Interger类型的value值排序呢?
文档中TreeMap有构造方法能根据给定的比较器排序,如何实现?

2 个回复

倒序浏览
这个问题我想过,不过我也不知道怎么做,求大神帮忙!
回复 使用道具 举报
文档中TreeMap有构造方法能根据给定的比较器排序,public TreeMap(Comparator<? super K> comparator)
这个比较器还是对集合中的键进行排序的,要想按照value来排序,我的思路:
Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();//将TreeMap转成entrySet
然后定义一个List集合,集合中存储的对象是tm集合中键值对。用迭代的方法拿到键值对对象(Map.Entry类型),作为一个单独的键值对对象,可以通过getKey和getValue
方法获取键和值,再定义比较器就可以方便地按你想要的方式排序了。参考代码:
  1. class MyComparator implements Comparator<Map.Entry<Character,Integer>>
  2. {
  3.         public int compare(Map.Entry<Character,Integer> o1,Map.Entry<Character,Integer> o2)
  4.         {
  5.                
  6.                  if(o1.getValue()==o2.getValue())//当value相同时,用key进行比较排序。
  7.                 {
  8.                         return o1.getKey().compareTo(o2.getKey());
  9.                 }else{
  10.                         return o1.getValue() - o2.getValue();
  11.                 }
  12.         }
  13. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马