- map(T -> R)은 T 데이터 형을 R의 데이터형으로 1:1 변환
- flatMap(T -> R)은 T 데이터형에서 Stream<R>으로 1:N 변환
Stream의 map()
List<String> nameList = Arrays.asList("Tanaka", "Suzuki", "Takahashi");
Stream<Integer> stream = nameList.stream().map(x -> x.length());
System.out.println(stream.collect(Collectors.toList()));
실행 결과는 다음과 같다.
[6, 6, 9]
Tanaka | Suzuki | Takahashi |
↓ | ↓ | ↓ |
6 | 6 | 9 |
위와 같이 문자열에서 문자열 길이로 1:1변환하고 있다.
Stream의 flatMap()
List<String> nameList = Arrays.asList("Tanaka", "Suzuki", "Takahashi");
Stream<Object> stream = nameList.stream().flatMap(x -> Stream.of(x, x.length()));
System.out.println((stream.collect(Collectors.toList())));
실행 결과는 다음과 같다.
[Tanaka, 6, Suzuki, 6, Takahashi, 9]
Tanaka | Suzuki | Takahashi |
↓ | ↓ | ↓ |
Tanaka, 6 | Suzuki, 6 | Takahashi, 9 |
문자열에서 부터 [문자열, 문자열 길이]로 1:N으로 변환한다. 그러나 이 경우는 2차원 배열이 생성되는 것이 아닌 flat한 Stream이 반환되므로 주의할 필요가 있다.
참고한 사이트
'Java' 카테고리의 다른 글
[Java] 데몬스레드 (0) | 2024.04.30 |
---|---|
[Java] Pass By Value와 Pass By Reference의 차이 (0) | 2023.08.24 |
[Java] equals와 hashCode 함수 (0) | 2023.08.23 |
[Java] Stream API의 활용 및 사용법 (0) | 2023.08.23 |
[Java] 람다식(Lambda Expression)과 함수형 인터페이스(Functional Interface) (0) | 2023.08.23 |