Stream API 중간 연산 -> map 메서드

황상익·2023년 11월 3일

스트림은 파라미터로 제공되는 함수function<T, R> 관련된 함수형 인터페이스를 적용해서 기존 요소를 새로운 요소로 Mapping

기존 값을 변경한다는 개념보다는, 새로운 값을 만든다.
즉, 변환에 매핑이라는 단어

  • 여러 매서드가 존재하는데
    => mapToInt, mapToLong, mapToDouble, mapToObj가 있다.
    일반스트림과 기본형 특화 스트림은 위의 메서드중 타입에 따라 3가지씩 가지고 있고, 없는 메서드는 자기 자신 타입의 스트림을 반환.
    IntStream의 경우 map, mapToLong, mapToDouble, mapToObj가 존재
    map 자체가 intStream을 반환, Stream의 경우 map, mapToint, mapToLong,
    mapToDouble이 존재, map 자체가 stream을 반환

Map 메서드는 경국 자기 자신 타입의 스트림을 반환.
일반 스트림에서는 Function<T,R> 이 사용, T는 변환 전, R은 변환후

1.mapToInt

-> ToIntFunction이라는 인터페이스의 이름에서 알수 있듯, Function<T,R>에서 T만 제네렉, R은 int
-> 다른 기본형 특화 스트림에서는 LongToIntFunction나 DoubleToIntFunction을 파라미터로 전달한다.
-> 인터페이스에서 알수 있듯 T는 long & double R은 int로 정해짐 (제너릭 타입을 받지 않음)

2.mapToLong

-> 스트림을 LongStream으로 변환
-> LongStream을 제외한 모든 스트림에서 동일하게 제공

3.mapToObj

-> 기본형 특화 스트림을 Stream으로 변환
-> IntStream에서 mapToObj를 살펴본 내용인데 IntFunction를 파라미터로 받는다.
-> 기본형 특화 스트림의 종류에 따라 LongFunction, DoubleFunction 사용
-> 인터페이스의 이름에서 알듯 Function <T,R>에서 T가 int, long, double

profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글