[개발환경]

JDK 1.8



요즘 자바로 처음 작업중에 있는데, 이래저래 많이 배우고 있다. 

하이버네이트를 사용해서 POJO 를 엔티티로 사용하고 있는데, 리스트를 정렬해서 가져와야 할 일이 생겼다.


그래서 당연히 getter 함수에 리턴 전에 sort 하도록 하였다.


근데, 값이 엄청 꼬였다...........


해결법을 못 것은 정렬된 값을 가져와야 하기전에 한 번만 정렬 시키는 것이었다. 


List<Tpo_work_table_template_detail> details = new ArrayList<Tpo_work_table_template_detail>(

        this.tpo_work_table_template_detail.stream()

        .sorted(Comparator.comparing(Tpo_work_table_template_detail::getWeek)

                .thenComparing(Tpo_work_table_template_detail::getSeq))

        .collect(Collectors.toList())

    );

 

this.setTpo_work_table_template_detail(details);


JDK 1.8 버전이라 람다 사용이 가능하다. 

이전 버전은 안되었다는 것 같다. 


아래와 같은 방법으로 List<T> 객체를 여러 속성을 사용하여 정렬할 수 있다.  

comparing 함수 뒤에 sort 방향에 대해서도 줄 수 있는 것 같다.

comparing 마다 각각 사용가능한 듯 하다. 안써봤다.



list.stream()

    .sorted(

        Comparator.comparing(super T::methodName)

                .thenComparing(super T::methodName)

        )


list.stream()

    .sorted(

        Comparator.comparing(super T::methodName).reverse()

                .thenComparing(super T::methodName).reverse()

        )




Posted by motolies
,