[수정 제안] 10. Optional.pdf - p.24 - orElse() 사용 용도
공부하던 중에 이 부분은 이렇게 수정해야 되는 것 아닌가..? 싶어서 글 남겨봅니다.
[수정 제안 정보]
대상 강의록:
10. Optional.pdf대상 위치:
강의록 p.24의 최상단 부분,영상의 10분 50초~수정 제안
수정 전:
사용 용도
orElse(T other)
- 값이이미 존재할가능성이 높거나, ...수정 후:
사용 용도
orElse(T other)
- 값이존재하지 않을가능성이 높거나, ...
수정 제안에 대한 근거
orElse(T other)는 other의 생성 비용이 높은 경우에 "값이 이미 존재함에도 불구하고 생성 연산을 수행해야됨"으로 인해서 비효율이 발생합니다.
이는 바꿔 말하면 "값이 존재하지 않는 경우에는 생성 연산이 필수적임"이기 때문에 "값이 존재하지 않는 경우에는 비효율이 발생하지 않음"이라고 해석할 수 있을 것 같습니다.
이때 강의에서 말하고자 하는 바는 "orElse()는 비효율이 발생할 수도 있다. 하지만 발생하지 않는 경우에는 사용해도 좋다." 라고 이해했는데, 이때 "비효율이 발생하지 않는 경우"를 "값이 존재하지 않는 경우(생성 연산이 꼭 필요한 경우)"라는 표현으로 대체할 수 있기 때문에
"값이 존재하지 않을 가능성이 높은 경우(= 비효율이 발생하지 않는 경우)에는 orElse()를 사용해도 괜찮다."라고 수정해야 하는 것이 아닌가 싶어서 제안합니다.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. dev.rudevico님.
Optional의 orElse() 메서드 사용에 대한 제안해주신 부분에 대해 설명드리겠습니다. orElse(T other) 메서드는 Optional 객체가 비어 있을 때 제공된 기본값 other를 반환하도록 설계되어 있습니다. 이 메서드는 값이 없을 경우에 대비해 대체값이 필요할 때 유용하게 사용됩니다. 당신의 제안대로 “값이 존재하지 않을 가능성이 높은 경우(= 비효율이 발생하지 않는 경우)“에 orElse()를 사용해도 괜찮다는 것은 올바른 방향이라고 볼 수 있습니다.
여기서 주의해야 할 점은, orElse(T other)는 other를 항상 평가(evaluate)한다는 것입니다. 즉, 값이 존재하지 않아서 other의 생성이 필요한 상황이 아니라도, 항상 생성하게 됩니다. 따라서 other의 생성 비용이 높은 경우에는 orElseGet(Supplier<? extends T> supplier)를 사용하는 것이 더 효율적입니다. 이는 값이 없을 때만 람다를 수행하기 때문입니다.
관련된 내용을 더 이해하시려면 아래의 답변들을 참고하시면 좋습니다:
- Optional.ofNullable, 개선된 null 처리를 위한 방법. 이 답변에서는 Optional의 유용성에 대해 설명하고 있습니다.
- Entity Optional 반환 값에 대한 질문(왜 Optional로 하는게 좋을까요?). Optional을 사용하는 이유와 장점에 대해 좋은 예시를 제공합니다.
- Optional에 대한 심도 깊은 이해를 위한 논의. Optional이 메모리 상 오버헤드를 가져올 수 있는 경우에 대해서 자세히 설명합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
db sql vs java stream 비교 궁금증 알려주세요!
1
75
1
파라미터 구분이 안되는지..?
0
70
1
자바 21 버전을 꼭 써야하나요??
0
144
2
9. 스트림 API3-컬렉터 오타?
0
78
2
(추석 챌린지) 복습 정리내용
0
95
1
람다 궁금한 점
0
73
2
스트림과 for문 질문
0
44
1
디폴트 메서드를 사용한 리펙토링
0
52
1
실무에서의 커스텀 Collector 사례 여부
0
65
1
IntelliJ 한글 깨지는 현상 문의
0
202
1
함수형 프로그래밍 적용 범위/원칙
0
61
1
스트림에 대해서 질문(float)은 사용하는지
0
58
1
[자료 패키지 누락] 2.람다 자료에서 문제 패키지명 생략 (25page)
0
60
2
지연 평가
0
68
1
메서드 시그니처
0
102
3
고급편 우선순위
0
130
3
스프링 데이터 JPA 인터페이스에서의 default 메서드 사용
0
113
2
독립적인 스레드 할당 시 스레드 개수는 어떻게 할당해야 할까요?
0
87
1
병렬 프레임 병목 현상 해결책에 대해 궁금한 점
0
103
1
스트림 중복 에러 관련 질문
0
71
1
자바 버전이 31 까지 업데이트 된다면 새로운 자바 강의를 추가 하실 건가요?
0
134
1
임계값과 스레드수를 줄일 경우 교착상태가 발생할수 있는건가요?
0
103
2
변수 합치기에 대해서 질문드립니다!
0
83
2
flatMap 응용 방법에 대해서, 이렇게 하는게 맞는지?
0
129
1





