Java 스트림(Stream) 연산 옵션 타입
스트림 연산 옵션 타입
■ 스트림 연산 옵션 타입
✓ java.util 패키지 소속
✓ Optional은 null을 사용하지 않고 부재 값을 포함한 데이터를 저장하는 클래스
✓ 값의 존재 여부에 따라 다양하게 처리할 수 있는 기능을 제공
✓ 종류: Optional, OptionalInt, OptionalLong, OptionalDouble
Q) String과 Date는 상속 관계가 아닌데도 null???
옵션 타입
■ 옵션 타입
- Optional 및 OptionalInt 클래스가 제공하는 주요 연산
- OptionalInt는 파란색으로 표기
메서드 | 의미 |
static Optional empty() | 빈 Optional 객체를 반환한다. |
T get(), int getAsInt() | 값을 반환하며, 없다면 예외를 던진다. |
boolean isPresent() | 값의 존재 여부를 반환한다. |
void ifPresent(Consumer) | 값이 있을 때 Consumer에서 처리한다. |
static Optional of(T) static OptionalInt of(int) |
주어진 값을 가진 Optional 타입으로 변환한다. |
static Optional ofNullalble(T) static Optional ofNullable(int) |
주어진 값을 가진 Optional을 반환한다. 만약 null이라면 빈 Optional을 반환한다. |
T orElse(T), int orElse(int) | 값이 없을 때 디폴트 값을 지정한다. |
옵션 타입 예제
OptionalEx.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package lect12;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalInt;
public class OptinalEx {
public static OptionalDouble divide(double d, double e) {
return e == 0 ? OptionalDouble.empty() : OptionalDouble.of(d / e);
}
public static void main(String[] args) {
OptionalInt i = OptionalInt.of(100);
OptionalDouble d = OptionalDouble.of(3.141592);
Optional<String> s = Optional.of("Good Afternoon!");
System.out.println(i.getAsInt());
System.out.println(d.getAsDouble());
System.out.println(s.get());
System.out.println(i);
System.out.println(d);
System.out.println(s);
System.out.println(divide(1.0, 2.0));
System.out.println(divide(1.0, 0.0));
System.out.println("======================");
// String s1 = "Stream Test"; // 1차 테스트
String s1 = null; // 2차 테스트
Optional<String> so = Optional.ofNullable(s1);
if(s1 != null) System.out.println(s1);
else System.out.println("없음");
if(so.isPresent()) System.out.println(so.get());
else System.out.println("없음");
String s2 = so.orElse("없음");
System.out.println(s2);
so.ifPresentOrElse(x -> System.out.println(x), () -> System.out.println("없음"));
}
}
|
cs |
3. 함께 보면 좋은 글
'Language > JAVA' 카테고리의 다른 글
[JAVA] 메모장(notepad) 만들기 - 열기, 저장, 새 파일, 종료 메서드 구현 ② | Yoon's Dev (0) | 2021.05.26 |
---|---|
[JAVA] 메모장(notepad) 만들기 ① - 인터페이스 구현 | Yoon's Dev (0) | 2021.05.25 |
[JAVA] 스트림(Stream) 연산 느긋한 연산, 조급한 연산, 병렬 처리 | Yoon's Dev (0) | 2021.05.18 |
[JAVA] JAVA 람다식을 활용한 예제 (1) | Yoon's Dev (0) | 2021.05.08 |
[JAVA] 문자(Text) 스트림, 버퍼(Buffer) 스트림, File 클래스 | Yoon's Dev (0) | 2021.04.26 |