Collections 중급

스트림을 한 번만 순회하여 두 가지 집계를 동시에 계산합니다.

✕ Java 8
long count = items.stream().count();
double sum = items.stream()
    .mapToDouble(Item::price)
    .sum();
var result = new Stats(count, sum);
✓ Java 12+
var result = items.stream().collect(
    Collectors.teeing(
        Collectors.counting(),
        Collectors.summingDouble(Item::price),
        Stats::new
    )
);
이 코드에 문제가 있나요? 알려주세요.

단일 순회

스트림을 두 번 대신 한 번만 처리합니다.

🧩

조합 가능

병합 함수로 임의의 두 컬렉터를 결합합니다.

🔒

불변 결과

레코드나 값 객체로 직접 병합합니다.

이전 방식
두 번 순회
모던 방식
teeing()
JDK 버전
12
난이도
중급
Collectors.teeing()
사용 가능

JDK 12 (2019년 3월) 이후 널리 사용 가능

Collectors.teeing()은 각 요소를 두 개의 다운스트림 컬렉터에 전달하고 결과를 병합합니다. 데이터를 두 번 스트리밍하거나 가변 누산기를 사용하지 않아도 됩니다.

공유 𝕏 🦋 in