Map과 flatMap

janghoosa·2025년 1월 19일
0

colletion을 쓰다보면 Map과 flatMap을 사용하는 경우가 있다. 둘의 차이점을 알아보자.

Map

Map은 입력 요소를 특정 함수에 매핑하여 각 요소를 변환하는 함수이다. 변환된 요소들이 그대로 스트림에 1:1로 포함이 된다.

import java.util.List;
import java.util.stream.Collectors;

public class MapExample {
    public static void main(String[] args) {
        List<String> names = List.of("Alice", "Bob", "Charlie");

        // 각 문자열을 대문자로 변환
        List<String> upperCaseNames = names.stream()
                                           .map(String::toUpperCase)
                                           .collect(Collectors.toList());

        System.out.println(upperCaseNames); // 출력: [ALICE, BOB, CHARLIE]
    }
}

FlatMap

FlatMap도 각 요소를 스트림에 매핑하는건 똑같지만 한번 평평(flatten)하게 만들어준다. 따라서 중첩구조가 있는 경우 평탄화 시켜서 처리된다. (1:N 매핑)

import java.util.List;
import java.util.stream.Collectors;

public class FlatMapExample {
    public static void main(String[] args) {
        List<List<String>> nestedList = List.of(
            List.of("Alice", "Bob"),
            List.of("Charlie", "David"),
            List.of("Eve")
        );

        // 중첩 리스트를 평탄화
        List<String> flattenedList = nestedList.stream()
                                               .flatMap(List::stream)
                                               .collect(Collectors.toList());

        System.out.println(flattenedList); // 출력: [Alice, Bob, Charlie, David, Eve]
    }
}
profile
백엔드 개발자입니다 :)

0개의 댓글