[Java] Optional에서 map과 flatMap의 차이점 쉽고 빠르게 이해하기

2024. 2. 28. 12:42·Java

map과 flatMap의 차이점

Optional의 map과 flatMap의 주요 차이점은 함수의 반환 타입이 다르다는 것이다.

  • map : Optional로 감싸진 타입(T)이 비어있지 않으면 .map()을 적용하고, 결과를 Optinal로 감싸서 반환한다. 만약 처음부터 Optional이 비어있었다면 빈 Optional을 반환한다.
  • flatMap : map과 비슷하다. 하지만 .flatMap()을 적용한 결과를 Optional로 감싸지 않고 반환한다는 점만 다르다. 즉, 중첩된 Optional을 평면화 해주는 역할을 한다.

예제 코드

public class Car {

    // Car의 필드에 name은 차 이름이 있을수도 없을수도 있기에 Optional 로 감싸져 있다.
    private Optional<String> name;
}

static main() {
    Optional<Car> car = new Car(); // Car 객체가 Optional 로 감싸져있다고 가정

    // map vs flatMap 결과
    
    // Optional.map()은 적용 결과에 다시 Optional을 감싼다.
    Optional<Optional<String>> carName = car.map(Car::getName);
    
    // Optional.flatMap()은 적용 결과를 그대로 내보낸다. (평면화)
    Optional<String> carName = car.flatMap(Car::getName);
}

'Java' 카테고리의 다른 글

Java Memory Model(JMM)과 동시성 규칙  (2) 2025.01.22
JVM 아키텍처 정리  (0) 2025.01.22
[Java] opencsv 로 CSV 읽고 저장하기  (2) 2024.07.09
'Java' 카테고리의 다른 글
  • Java Memory Model(JMM)과 동시성 규칙
  • JVM 아키텍처 정리
  • [Java] opencsv 로 CSV 읽고 저장하기
옐리yelly
옐리yelly
  • 옐리yelly
    개발 갤러리
    옐리yelly
  • 전체
    오늘
    어제
    • 모든 글 보기 (84)
      • Project (22)
      • Java (4)
      • Spring (8)
      • Kubernetes (6)
      • Docker (2)
      • JPA (2)
      • Querydsl (2)
      • MySQL (9)
      • ElasticSearch (7)
      • DevOps (4)
      • Message Broker (3)
      • Git & GitHub (2)
      • Svelte (1)
      • Python (8)
        • Python Distilled (4)
        • Anaconda (1)
        • Django (0)
        • pandas (3)
      • Algorithm (1)
      • Computer Science (0)
      • 내 생각 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nks
    Spring
    querydsl
    gitops
    Project
    JPA
    Python
    blue-green 배포
    포텐데이
    svelte
    elasticsearch
    MySQL
    커넥션 풀
    mybatis
    프로젝트
    pymysql
    비사이드
    ncloud
    k8s
    리팩토링
    성능 테스트
    데드락
    devops
    Message Broker
    docker
    pandas
    예약 시스템
    OOP
    RabbitMQ
    argocd
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
옐리yelly
[Java] Optional에서 map과 flatMap의 차이점 쉽고 빠르게 이해하기
상단으로

티스토리툴바