Stream List 정렬
오름차순
List<Member> sortedMemberList = memberList.stream()
.sorted(Comparator.comparing(Member::getAge)) // member의 age 속성을 기준으로 정렬한다.
.collect(toList());
내림차순
List<Member> sortedMemberList = memberList.stream()
.sorted(Comparator.comparing(Member::getAge, Comparator.reverseOrder()))
.collect(toList());
정렬 객체비교 시 nullable한 경우
Comparator.nullsFirst(), Comparator.nullsLast() 사용
Comparator.nullsFirst() : null 가진 객체를 앞으로 보내어 정렬
Comparator.nullsLast() : null 가진 객체를 뒤로 보내어 정렬
오름차순
List<Member> result = memberList.stream()
.sorted(Comparator.comparing(Member::getAge, Comparator.nullsLast(Comparator.naturalOrder())))
.collect(toList());
내림차순
List<Member> result = memberList.stream()
.sorted(Comparator.comparing(Member::getAge, Comparator.nullsFirst(Comparator.reverseOrder())))
.collect(toList());
여러 필드값의 Stream sorted
orgOrderNum -> orgNm -> empNm 순으로 정렬된다.
orgNm이 null인경우 제일 마지막순서로 정렬한다.
orgMemberList = orgMemberList.stream()
.sorted(Comparator.comparing(DsbEmp::getOrgOrderNum).reversed()
.thenComparing(Comparator.comparing(DsbEmp::getOrgNm, Comparator.nullsLast(Comparator.naturalOrder())).reversed())
.thenComparing(Comparator.comparing(DsbEmp::getEmpNm).reversed()))
.collect(Collectors.toList());