java按照map的value排序

来源:互联网 发布:安装win10 linux的pe 编辑:程序博客网 时间:2024/05/17 01:02
java的TreeMap可以排序,只可惜是按照key来排序的,或者重写其他Map的排序算法也都是按照key来排序的,下面贴出来一个按照value排序的算法:

 

public class SortMap {    public static void main(String[] args) throws Exception {        // TODO code application logic here        Map<String, Integer> myMap = new LinkedHashMap();        myMap.put("1", 1);        myMap.put("2", 4);        myMap.put("3", 3);        myMap.put("4", 9);        myMap.put("5", 6);        myMap.put("6", 2);                printMap(myMap);                myMap = sortMap(myMap);                printMap(myMap);    }        private static void printMap(Map map){        System.out.println("===================mapStart==================");        Iterator it = map.entrySet().iterator();        while(it.hasNext()){            Map.Entry entry = (Map.Entry) it.next();            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println("===================mapEnd==================");    }     public static Map sortMap(Map oldMap) {        ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(oldMap.entrySet());        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {            @Override            public int compare(Entry<java.lang.String, Integer> arg0,                    Entry<java.lang.String, Integer> arg1) {                return arg0.getValue() - arg1.getValue();            }        });        Map newMap = new LinkedHashMap();        for (int i = 0; i < list.size(); i++) {            newMap.put(list.get(i).getKey(), list.get(i).getValue());        }        return newMap;    }}


原创粉丝点击