Language/JAVA

[JAVA] 스트림(Stream) 연산 옵션 타입 | Yoon's Dev

Yooniron 2021. 5. 20. 21:26

Java 스트림(Stream) 연산 옵션 타입

 

 


스트림 연산 옵션 타입

 

■ 스트림 연산 옵션 타입

java.util 패키지 소속

Optionalnull을 사용하지 않고 부재 값을 포함한 데이터를 저장하는 클래스

값의 존재 여부에 따라 다양하게 처리할 수 있는 기능을 제공

종류: 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.02.0));
        System.out.println(divide(1.00.0));
        
        System.out.println("======================");
        
//        String s1 = "Stream Test"; // 1차 테스트
        String s1 = null// 2차 테스트
        Optional<String> so = Optional.ofNullable(s1);
        
        if(s1 != nullSystem.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

 

1차 테스트 결과

 

 

2차 테스트 결과

 


 

3. 함께 보면 좋은 글

 

 

[JAVA] 스트림(Stream) 연산 느긋한 연산, 조급한 연산, 병렬 처리 | Yoon's Dev

JAVA 스트림(Stream) 연산 느긋한 연산, 조급한 연산, 병렬 처리 스트림 연산과 옵션 타입 ■ 스트림 파이프라인 ✓ 스트림 연산의 결과가 Stream 타입이면 연속적으로 호출 가능 ✓ 스트림 연산의

yooniron.tistory.com