Java HashMap排序(按Key排序和按Value排序)

HashMap按Value排序

import java.util.*;

public class HashMapSort {
    private static void mapValueSort(HashMap labelsMap) {
        List> list = new ArrayList>(labelsMap.entrySet());
        list.sort(new Comparator>() {
            public int compare(Map.Entry o1, Map.Entry o2) {
                return o1.getValue() < o2.getValue() ? 1 : ((o1.getValue() == o2.getValue()) ? 0 : -1);
            }
        });
        for (Map.Entry mapping : list) {
            System.out.println(mapping.getKey() + ":" + mapping.getValue());
        }
    }

    public static void main(String[] args) {
        HashMap wordMap = new HashMap() {{
            //value为key的长度
            put("这是苹果园", 5);
            put("这是苹果", 4);
            put("她上街买了一个苹果", 9);
            put("他吃了一个苹果", 7);
            put("苹果", 2);
        }};
        mapValueSort(wordMap);
    }
}

输出:

她上街买了一个苹果:9
他吃了一个苹果:7
这是苹果园:5
这是苹果:4
苹果:2

 

HashMap按Key排序


import java.util.*;

public class HashMapSort {
    private static void mapKeySort(HashMap labelsMap) {
        List> list = new ArrayList>(labelsMap.entrySet());
        list.sort(new Comparator>() {
            public int compare(Map.Entry o1, Map.Entry o2) {
                return o1.getKey() < o2.getKey() ? 1 : ((o1.getKey() == o2.getKey()) ? 0 : -1);
            }
        });
        for (Map.Entry mapping : list) {
            System.out.println(mapping.getKey() + ":" + mapping.getValue());
        }
    }

    public static void main(String[] args) { 
        HashMap wordMap2 = new HashMap() {{
            //key为value的长度
            put(5, "这是苹果园");
            put(4, "这是苹果");
            put(9, "她上街买了一个苹果");
            put(7, "他吃了一个苹果");
            put(2, "苹果");
        }};
        mapKeySort(wordMap2);
    }
}

输出

9:她上街买了一个苹果
7:他吃了一个苹果
5:这是苹果园
4:这是苹果
2:苹果

若想按值作升序排序,仅将compare中的语句

return o1.getKey() < o2.getKey() ? 1 : ((o1.getKey() == o2.getKey()) ? 0 : -1);

修改为:

return o1.getKey() < o2.getKey() ? -1 : ((o1.getKey() == o2.getKey()) ? 0 : 1);

即可。

你可能感兴趣的:(JAVA学习)