1. 程式人生 > >map排序,根據key給map排序,根據value給map排序

map排序,根據key給map排序,根據value給map排序

1.根據key鍵給map排序

    public static void main(String[] args) {
        Map<Integer,String> map = new TreeMap<>(new Comparator<Integer>(){
            @Override
            public int compare(Integero1, Integer o2) {
                return o1-o2;//按照key順序排列,o2-o1是逆序
            }
        });
        map.put(3, "China");
        map.put(8, "America");
        map.put(2, "Canada");
        map.put(1, "Franch");
        map.put(5, "Banana");
//map遍歷
        Set<Integer> set = map.keySet();
        Iterator<Integer> iterator = set.iterator();
        while(iterator.hasNext()){
            Integer key2 = iterator.next();
            System.out.println(key2+"-------"+map.get(key2));
        }
    }


排序結果:

1-------Franch
2-------Canada
3-------China

5-------Banana
8-------America

注意:標紅部分的對應關係,因為key是Integer,所以,比較器的泛型和引數 都是Integer.

2.根據value給map排序

    public static void main(String[] args) {
        TreeMap<Integer, String> map = new TreeMap<>();
        map.put(3, "China");
        map.put(8, "America");
        map.put(2, "Canada");
        map.put(1, "Franch");
        map.put(5, "Banana");

        ArrayList<Entry<Integer, String>> list =
                new ArrayList<Map.Entry<Integer, String>>(map.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
            @Override
            public int compare(Entry<Integer, String> o1,
                               Entry<Integer, String> o2) {
                return o1.getValue().compareTo(o2.getValue());//順序
            }
        });

        for (Entry<Integer, String> entry : list) {
            System.out.println(entry.getKey()+"------"+entry.getValue());
        }
    }


排序結果:

8------America
5------Banana
2------Canada
3------China
1------Franch

如果想要逆序,改變o1和o2的順序即可,藍色部分改為:

o2.getValue().compareTo(o1.getValue())