본문 바로가기

RxJava

[RxJava] 조건과 불린 연산자

안녕하세요. 메로나입니다.

 

오늘은 조건관 불린 연산자에 대해 공부하겠습니다.

 

all

통지된 데이터가 조건에 맞지 않는다면 이후 데이터는 구독 해지합니다.

통지된 모든 데이터를 설정한 조건에 맞는지를 판단합니다.

all - 마블다이어그램

public static void main(String[] args) {
        Observable.just(11, 1, 2, 3, 4, 5)
                .doOnNext(num -> System.out.println("Number: " + num))
                .all(num -> num > 10)
                .subscribe(System.out::println);
    }
// 출력
Number: 11
Number: 1
false // 이후 구독이 해지됩니다.

 

amb

여러 개의 Observable 중에서 최초 통지된 시점이 가장 빠른 Observable만 통지되고 나머지 Observable은 무시됩니다.

amb - 마블다이어그램

 public static void main(String[] args) {
        Observable<Integer> observable1 = Observable.just(1, 2, 3, 4, 5)
                .delay(1000L, TimeUnit.MILLISECONDS); // 1초 후에 발행

        Observable<Integer> observable2 = Observable.just(10, 20, 30, 40, 50)
                .delay(500L, TimeUnit.MILLISECONDS); // 0.5초 후에 발행

        Observable.ambArray(observable1, observable2) // 먼저 데이터를 발행하는 Observable을 선택
                .subscribe(System.out::println);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
// 출력
10
20
30
40
50

 

contains

파라미터의 데이터가 Observable에 포함되어 있는지를 판단합니다.

결괏값을 true / false로 통지합니다.

contains - 마블다이어그램

public static void main(String[] args) {
        Observable.just(1, 3, 5, 7, 9)
                .contains(5)
                .subscribe(System.out::println);
    }
// 출력
true

 

defaultIfEmpty

통지할 데이터가 없을 경우 default 값을 통지합니다.

public static void main(String[] args) {
        Observable.just(1, 3, 5, 7, 9)
                .filter(num -> num > 10)
                .defaultIfEmpty(0)
                .subscribe(System.out::println);
    }
// 출력
0

 

sequenceEqual

두 Observable이 동일한 순서로 동일한 개수의 같은 데이터를 통지하는지 판단 후 true / false를 통지합니다.

sequenceEqual - 마블다이어그램

public static void main(String[] args) {
        Observable<Integer> observable1 = Observable.just(1, 2, 3, 4, 5);
        Observable<Integer> observable2 = Observable.just(1, 2, 4, 5, 2);
        Observable.sequenceEqual(observable1, observable2)
                .subscribe(System.out::println);
    }
// 출력
false

 

오늘은 많이 사용할 것 같은 조건문에 따른 불린 연산자를 공부하였습니다.

20000~

'RxJava' 카테고리의 다른 글

[RxJava] 데이터 집계 연산자  (0) 2025.02.22
[RxJava] 유틸리티 연산자  (0) 2025.02.21
[RxJava] 에러 처리 연산자  (0) 2025.02.19
[RxJava] 데이터 결합 연산자  (0) 2025.02.11
[RxJava] RxJava 퀴즈 문제  (0) 2025.02.09