본문 바로가기
공부/프로그래밍

[java] List<map> 형태 정렬하기(lambda 이용)

by demonic_ 2019. 10. 12.
반응형

[java] lambda 를 이용한 정렬(List<map> 형태)

    public static void main(String[] args) {
        Map<String, Object> map1 = new HashMap<>();
        Map<String, Object> map2 = new HashMap<>();
        Map<String, Object> map3 = new HashMap<>();
        Map<String, Object> map4 = new HashMap<>();

        map1.put("name","네이버");
        map1.put("date","2019-01-01");

        map2.put("name","카카오");
        map2.put("date","2019-04-01");

        map3.put("name","구글");
        map3.put("date","2019-03-01");

        map4.put("name","페이스북");
        map4.put("date","2019-02-01");

        List<Map> list = new LinkedList<>();
        list.add(map1);
        list.add(map2);
        list.add(map3);
        list.add(map4);

        System.out.println(list);

        list = list.stream().sorted((o1, o2) -> o1.get("date").toString().compareTo(o2.get("date").toString()) ).collect(Collectors.toList());
        System.out.println(list);
    }

결과

[{date=2019-01-01, name=네이버}, {date=2019-04-01, name=카카오}, {date=2019-03-01, name=구글}, {date=2019-02-01, name=페이스북}]
[{date=2019-01-01, name=네이버}, {date=2019-02-01, name=페이스북}, {date=2019-03-01, name=구글}, {date=2019-04-01, name=카카오}]

 

 

오름차순으로 정렬하고 싶다면 o1과 o2의 위치를 바꿔주면 된다.

list = list.stream().sorted((o1, o2) -> o2.get("date").toString().compareTo(o1.get("date").toString()) ).collect(Collectors.toList());
System.out.println(list);

결과

[{date=2019-01-01, name=네이버}, {date=2019-04-01, name=카카오}, {date=2019-03-01, name=구글}, {date=2019-02-01, name=페이스북}]
[{date=2019-04-01, name=카카오}, {date=2019-03-01, name=구글}, {date=2019-02-01, name=페이스북}, {date=2019-01-01, name=네이버}]

반응형

댓글