map과 flatMap은 element shape를 한 층 유지하거나 펼친다

한 원소가 collection을 반환할 때 map을 쓰면 Stream<List<R>>처럼 중첩이 남습니다.

map

T→R · 원소 하나가 결과 하나

map to stream

T→Stream<R> · 중첩 유지

flatMap

T→Stream<R> · 한 층 flatten

핵심: 하위 source 수명과 null 금지 규칙까지 확인해 flatMap을 선택합니다.