1. 程式人生 > >map按key和value排序

map按key和value排序

TreeMap:

預設按照key升序進行排序

public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<>();
        map.put("b", 123);
        map.put("c", 24);
        map.put("a", 56);
        for (Map.Entry<String, Integer> entry : map.entrySet()){
            System.out.println(entry.getKey() + " : "
+ entry.getValue()); } }

輸出結果:

a : 56
b : 123
c : 24

如果key想降序排列:

public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return
o2.compareTo(o1); } }); map.put("b", 123); map.put("c", 24); map.put("a", 56); for (Map.Entry<String, Integer> entry : map.entrySet()){ System.out.println(entry.getKey() + " : " + entry.getValue()); } }

輸出結果:

c : 24
b : 123 a : 56

按照value升序排列:

public static void main(String[] args) {
        TreeMap<String, Integer> map = new TreeMap<>();
        map.put("b", 123);
        map.put("c", 24);
        map.put("a", 56);
        List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o1.getValue()-o2.getValue();
            }
        });
        for (Map.Entry<String, Integer> entry : list){
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }

輸出結果:

c : 24
a : 56
b : 123

總結:

(1)TreeMap預設按照key升序排序,可以指定比較器。

(2)當需要返回排好序的map時,可以藉助LinkedHashMap來匯入以排好序的ArrayList中的資料。

(3)HashMap的按key或value排序,均是藉助比較器完成。具體實現類推於TreeMap。