List Map streram 排序

import java.util.*;
import java.util.stream.Collectors;


public class StephenJavaLiveTemplateDemo {

    
    public static void main(String[] args) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        Map<String, Object> map1 = new HashMap();
        map1.put("k1", "8");
        list.add(map1);

        Map<String, Object> map2 = new HashMap();
        map2.put("k1", "6");
        list.add(map2);

        //1.8 之前排序寫法
        Collections.sort(list, new Comparator<Map>() {
            @Override
            public int compare(Map o1, Map o2) {
                int ret = 0;
                //如果前者小於、等於或者大於後者,則分別返回-1/0/1;降序用o2.compareTo(o1)
                ret = o1.get("k1").toString().compareTo(o2.get("k1").toString());
                return ret;
            }
        });
        print(list);

        //1.8 排序寫法一:Lambda 表達式

        Collections.sort(list, (o1, o2) -> {
            int ret = 0;
            ret = o1.get("k1").toString().compareTo(o2.get("k1").toString());
            return ret;
        });


        //1.8 排序寫法二: stream + Lambda 表達式
        // 升序
        list = list.stream().sorted(Comparator.comparing(StephenJavaLiveTemplateDemo::sort2)).collect(Collectors.toList());
        print(list);
        // 降序
        list = list.stream().sorted(Comparator.comparing(StephenJavaLiveTemplateDemo::sort2).reversed()).collect(Collectors.toList());
        print(list);
    }


    private static String sort2(Map<String, Object> a) {
        return (String) a.get("k1");
    }

    private static void print(List<Map<String, Object>> list) {
        list.stream().forEach(x -> {
            System.out.println(x.get("k1"));
        });
        System.out.println("_____________");
    }


}

輸出:

6
8
_____________
6
8
_____________
8
6
_____________

 

 

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