Map排序,按key排序,按value排序。

1、按照key排序:

利用TreeMap,TreeMap中的數據是根據key值對象中的對比方法(comparaTo)的運行結果進行存儲,所以可以直接利用TreeMap將Map中的key進行排序。

2、按照value排序:

將待排序Map中的所有元素置於一個list列表中,然後使用Collections的一個靜態方法 sort(List<T> list, Comparator<? super T> c) 
來排序list,用比較器定義比較規則。

上代碼:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

public class TreeMapSort {
    public static void main(String[] args) {
        Map<String, String> treeMap = new TreeMap<String, String>();
        treeMap.put("1", "5.369");
        treeMap.put("5", "4.369");
        treeMap.put("3", "8.369");
        treeMap.put("2", "8.366");

        // 1、按照key排序:TreeMap中的數據是根據key值對象中的對比方法(comparaTo)的運行結果進行存儲
        System.out.println(treeMap);

       //2、 按照value排序:

List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(treeMap.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<String, String>>() {

            @Override
            public int compare(Entry<String, String> arg0,
                    Entry<String, String> arg1) {
                // 降序排列
                return arg1.getValue().compareTo(arg0.getValue());
            }
        });

        for (Map.Entry<String, String> mapping : list) {
            System.out.println(mapping.getKey() + " : " + mapping.getValue());
        }
    }
}

結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章