原帖地址
http://blog.csdn.net/exceptional_derek/article/details/9852929
这里要用到一个Comparator的接口,里面只有一个方法,compare(),我们实现这个接口就好,很简单
- private class ValueComparator implements Comparator<Map.Entry<String, Integer>>
- {
- public int compare(Map.Entry<String, Integer> mp1, Map.Entry<String, Integer> mp2)
- {
- return mp2.getValue() - mp1.getValue();
- }
- }
使用的时候也很简单,调用Collections工具类的sort方法时,传入我们自己写的这个实现类的对象,作为参数就可以了。先根据实际需求,创建一个List。
- Map<String,Integer> map=new HashMap<>();
- List<Map.Entry<String,Integer>> sort=new ArrayList<>();
- sort.addAll(map.entrySet());
- ValueComparator vc=new ValueComparator();
- Collections.sort(sort,vc);
很简单吧。
下面附上一个完整的小程序
- import java.util.*;
- class Test
- {
- private static class ValueComparator implements Comparator<Map.Entry<String,Integer>>
- {
- public int compare(Map.Entry<String,Integer> m,Map.Entry<String,Integer> n)
- {
- return n.getValue()-m.getValue();
- }
- }
- public static void main(String[] args)
- {
- Map<String,Integer> map=new HashMap<>();
- map.put("a",1);
- map.put("c",3);
- map.put("b",5);
- map.put("f",7);
- map.put("e",6);
- map.put("d",8);
- List<Map.Entry<String,Integer>> list=new ArrayList<>();
- list.addAll(map.entrySet());
- Test.ValueComparator vc=new ValueComparator();
- Collections.sort(list,vc);
- for(Iterator<Map.Entry<String,Integer>> it=list.iterator();it.hasNext();)
- {
- System.out.println(it.next());
- }
- }
- }
输出:
d=8
f=7
e=6
b=5
c=3
a=1