매핑 작업은 스트림의 요소를 변환하고 변환된 요소가 포함된 새 스트림을 반환합니다.
람다 표현식을 유일한 인수로 사용합니다.
모든 개별 요소(elements)를 변경하기 위해 사용합니다.
반환(return) 값은 변경된 요소를 포함하고 있는 새로운 스트림 객체입니다.
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.stream()
.map(num -> num * 10)
.forEach(System.out::println)
---출력결과---
10
20
30
컬렉션 스트림의 모든 Elements를 mapping 함수에 적용하여 모든 컬렉션이 결합된 스트림으로 반환합니다.
Stream<String[]> -> flatMap -> Stream<String>
Stream<Set<String>> -> flatmap -> Stream<String>
Stream<List<String>> -> flatmap -> Stream<String>
List<List<String>> collectionList = new ArrayList<>();
collectionList.add(Arrays.asList("a", "aa", "aaa"));
collectionList.add(Arrays.asList("b", "bb", "bbb"));
collectionList.add(Arrays.asList("c", "cc", "ccc"));
collectionList.stream()
.flatMap(s -> s.stream())
.filter(aa -> "cc".equals(aa))
.forEach(System.out::println);
---출력결과---
cc
filter(), distinct() 와 같은 '중간 메소드'는 컬렉션 스트림에서 작동하지 않습니다.
중간 메소드 사용을 위해서는 중간 메소드 사용 이전에 스트림 평탄화(flattern)가 필요합니다.
flatMap()은 평탄화 기능을 제공하고 있습니다.
[Stream] Match method (0) | 2020.07.28 |
---|---|
[Stream] slice method (0) | 2020.07.27 |
[Stream] Optional 클래스 (0) | 2020.07.23 |
[Stream] Method references (0) | 2020.07.22 |
Generic 장점과 특징 (0) | 2020.06.28 |
댓글 영역