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()); } }
代码也精简了不少。规则一样是前面的数减后面的数是负数为升序,正数为降序。