[개발환경]
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()
)