Streams 중급

중간 스트림을 생성하지 않고 입력당 0개 이상의 요소를 방출합니다.

✕ Java 8
stream.flatMap(order ->
    order.items().stream()
        .map(item -> new OrderItem(
            order.id(), item)
        )
);
✓ Java 16+
stream.<OrderItem>mapMulti(
    (order, downstream) -> {
        for (var item : order.items())
            downstream.accept(
                new OrderItem(order.id(), item));
    }
);
이 코드에 문제가 있나요? 알려주세요.

할당 감소

요소당 중간 Stream이 생성되지 않습니다.

🎯

명령형 스타일

루프와 조건문을 직접 사용합니다.

📐

유연함

완전한 제어로 0개, 1개, 또는 여러 개의 요소를 방출합니다.

이전 방식
flatMap + 리스트
모던 방식
mapMulti()
JDK 버전
16
난이도
중급
Stream.mapMulti()
사용 가능

JDK 16 (2021년 3월) 이후 널리 사용 가능

mapMulti()는 각 요소마다 Stream을 생성하지 않는 flatMap의 명령형 대안입니다. 필터링이나 복잡한 조건부 확장에 더 효율적입니다.

공유 𝕏 🦋 in