1. Java의 Stream API는 다양한 map 관련 메소드를 제공한다.

<aside> 📌 map(Function mapper)

</aside>

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>