partitioningBy?
partitioningBy 메서드는 자바 8부터 도입된 스트림(Stream) API의 기능 중 하나로, 요소들을 지정한 조건에 따라 두 그룹으로 분할합니다. 조건에 맞는 요소들과 그렇지 않은 요소들을 각각 리스트로 반환하여 처리할 수 있습니다
장점
partitioningBy 메서드를 사용하면 데이터를 두 그룹으로 쉽게 분할할 수 있어 다양한 상황에서 유용합니다. 예를 들어, 참/거짓 또는 짝수/홀수와 같이 두 가지로 분류할 때 매우 편리하게 사용할 수 있습니다.
코드 예제
```
@Getter
@AllArgsConstructor
public static class MemberResponse {
private String name;
private Integer no;
}
@Test
void partitionByMemberNo() {
List members = createMembers(100);
Map<Boolean, List> memberMap = partitionBy(members, 20);
assertThat(memberMap.get(true).size()).isEqualTo(80);
}
private List createMembers(int count) {
return IntStream.rangeClosed(1, count)
.mapToObj(i -> new MemberResponse("name" + i, i))
.collect(Collectors.toList());
}
private Map<Boolean, List> partitionBy(List members, Integer no) {
return members.stream()
.collect(Collectors.partitioningBy(member -> member.getNo() > no));
}
``
partitionBy
메서드는 전달받은 회원 리스트를 스트림으로 변환한 후, 각 회원의 번호가 인자로 전달된 no보다 큰지 여부에 따라 두 그룹으로 분할합니다. 이때, 번호가 인자로 전달된 no보다 큰 경우는 true
그룹으로, 그렇지 않은 경우는 false
그룹으로 분류됩니다
'Java' 카테고리의 다른 글
[Java] Optional<T> isPresent(), ifPresent() 사용하기 (0) | 2022.04.21 |
---|---|
[Java] Stream 사용하기 (0) | 2021.12.24 |
[초보개발자] HashMap 사용하기 (put, get, remove, Entry) (0) | 2021.07.11 |
[초보개발자] ArrayList 배열 사용하기 (2) | 2021.07.10 |
Java 공부노트 (0) | 2021.06.30 |
댓글