map
관련 메소드를 제공한다.<aside>
📌 map(Function mapper)
</aside>
map
메소드는 Stream의 각 요소에 주어진 함수를 적용하고, 그 결과로 구성된 새로운 Stream을 반환한다. 이를 통해 원본 Stream의 요소를 다른 형태로 변환할 수 있다.map
메소드는 원본 Stream을 변경하지 않는다. 대신 새로운 Stream을 생성하여 반환한다. 이는 함수형 프로그래밍의 핵심 원칙 중 하나인 불변성을 따르는 것이다.List<String> names = Arrays.asList("John", "Freddy", "Samuel");
names.stream()
.filter(name -> name.length() > 5) // name의 length가 5보다 큰것만 걸러낸다.
.map(String::toUpperCase) // 걸러진 값을 upperCase로 변환한다.
.forEach(System.out::println); // 만들어진 stream을 프린트로 출력한다
심화 코드예시
<aside>
📌 mapToInt(ToIntFunction mapper)
</aside>
Stream<Integer> integerStream = Stream.of(1, 2, 3);
IntStream intStream = integerStream.mapToInt(Integer::valueOf); // [1, 2, 3]
<aside>
📌 mapToLong(ToLongFunction mapper)
</aside>
Stream<Long> longStream = Stream.of(1L, 2L, 3L);
LongStream primitiveLongStream = longStream.mapToLong(Long::valueOf); // [1, 2, 3]
<aside>
📌 mapToDouble(ToDoubleFunction mapper)
</aside>
Stream<Double> doubleStream = Stream.of(1.0, 2.0, 3.0);
DoubleStream primitiveDoubleStream = doubleStream.mapToDouble(Double::valueOf); // [1.0, 2.0, 3.0]
<aside>
📌 flatMap(Function mapper)
</aside>
flatMap
메소드는 스트림의 각 요소가 여러 결과를 생성할 수 있는 경우에 사용된다.