HashMap排序方法及lambda表达式与Comparator匿名内部类

706 阅读1分钟


HashMap排序方法可借助ArrayList存储Map中

每一对(KEY-VALUE)即(Map.Entry<Class,Class> )

再借助Collections.sort()方法制定自己的排序规则。可以借助key排序亦可以借助value排序。

这边可以用到匿名内部类Comparator或lambda表达式。

Comparator匿名内部类方法:

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;class Solution {    public static void main(String[] args) {        Map<Integer,Integer> map = new HashMap<>();        map.put(1,6);        map.put(2,8);        map.put(3,2);        List<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet());                Collections.sort(list,new Comparator<Map.Entry<Integer,Integer>>() {            @Override            //返回值为负数为升序,正数为降序。            public int compare(Map.Entry<Integer,Integer> a, Map.Entry<Integer,Integer> b){                return a.getValue() - b.getValue();            }        });    }    }

lambda表达式是对Camparator类的精简:

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;class Solution {    public static void main(String[] args) {        Map<Integer,Integer> map = new HashMap<>();        map.put(1,6);        map.put(2,8);        map.put(3,2);        List<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet());                Collections.sort(list,(a,b) -> a.getValue() - b.getValue());    }    }

代码也精简了不少。规则一样是前面的数减后面的数是负数为升序,正数为降序。