Collectors.flatMapping()
그룹화 컬렉터 내부에서 flatMapping()을 사용하여 평탄화합니다.
코드 비교
✕ Java 8
// Flatten within a grouping collector
// Required complex custom collector
Map<String, Set<String>> tagsByDept =
// no clean way in Java 8
✓ Java 9+
var tagsByDept = employees.stream()
.collect(groupingBy(
Emp::dept,
flatMapping(
e -> e.tags().stream(),
toSet()
)
));
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
조합 가능
groupingBy 내부에서 다운스트림 컬렉터로 작동합니다.
단일 순회
단일 스트림 순회로 평탄화와 그룹화를 수행합니다.
중첩 가능
다른 다운스트림 컬렉터와 결합합니다.
이전 방식
중첩 flatMap
모던 방식
flatMapping()
JDK 버전
9
난이도
중급
JDK 지원
Collectors.flatMapping()
사용 가능
JDK 9 (2017년 9월) 이후 널리 사용 가능
동작 원리
Collectors.flatMapping()은 다운스트림 컬렉터로 일대다 매핑을 적용합니다. groupingBy 내부에서 평탄화 작업에 이상적입니다.
관련 문서