首先說一下如果Map對key進行從小到大默認排序是創建TreeMap對象。Map<Integer,Integer> maps = new TreeMap<>();就行了。
那么如何實現按value排序呢?
這里使用的是java.util.Collections類實現排序,將Map轉成List,再自定義比較器,代碼如下:
package day01_jichu; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class MapValSort { public static void main(String[] args) { Map<String, Integer> maps = new TreeMap<String, Integer>(); maps.put("zhangsan", 22); maps.put("lisi", 24); maps.put("wangwu", 18); maps.put("zhaoliu", 22); //自定義比較器 Comparator<Map.Entry<String, Integer>> valCmp = new Comparator<Map.Entry<String,Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { // TODO Auto-generated method stub return o2.getValue()-o1.getValue(); // 降序排序,如果想升序就反過來 } }; //將map轉成List,map的一組key,value對應list一個存儲空間 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(maps.entrySet()); //傳入maps實體 Collections.sort(list,valCmp); // 注意此處Collections 是java.util包下面的,傳入List和自定義的valCmp比較器 //輸出map for(int i=0;i<list.size();i++) { System.out.println(list.get(i).getKey() + " = " + list.get(i).getValue()); } } }
https://www.cnblogs.com/zzlback/p/12381881.html