Java Map實現按value從大到小排序


首先說一下如果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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM