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 |