language/java

Stream List 정렬

datajoy 2020. 3. 30. 23:45

오름차순

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());