文档中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();
- }
- }
- }
复制代码 |