RxJava - Conditional Operators



Following are the operators which evaluates one or multiple Observables or items emitted.

Sr.No. Operator & Description
1

all

Evaluates all items emitted to meet given criteria.

2

amb

Emits all items from the first Observable only given multiple Observables.

3

contains

Checks if an Observable emits a particular item or not.

4

defaultIfEmpty

Emits default item if Observable do not emit anything.

5

sequenceEqual

Checks if two Observables emit the same sequence of items.

6

skipUntil

Discards items emitted by first Observable until a second Observable emits an item.

7

skipWhile

Discard items emitted by an Observable until a given condition becomes false.

8

takeUntil

Discards items emitted by an Observable after a second Observable emits an item or terminates.

9

takeWhile

Discard items emitted by an Observable after a specified condition becomes false.

Example - Usage of defaultIfEmpty Operator

ObservableTester.java

package com.tutorialspoint;

import io.reactivex.rxjava3.core.Observable;

//Using defaultIfEmpty operator to operate on an Observable
public class ObservableTester  {
   public static void main(String[] args) {    
      final StringBuilder result = new StringBuilder();

      Observable.empty()
         .defaultIfEmpty("No Data")   
         .subscribe(s -> result.append(s));

      System.out.println(result);

      String[] letters = {"a", "b", "c", "d", "e", "f", "g"};
      final StringBuilder result1 = new StringBuilder();

      Observable.fromArray(letters)
         .firstElement()
         .defaultIfEmpty("No data")   
         .subscribe(s -> result1.append(s));

      System.out.println(result1);
   }
}

Output

Compile and Run the code to verify the following output −

No Data
a

Example - Usage of contains Operator

ObservableTester.java

package com.tutorialspoint;

import io.reactivex.rxjava3.core.Observable;

//Using contains operator to operate on an Observable
public class ObservableTester  {
   public static void main(String[] args) {    
      final StringBuilder result = new StringBuilder();

      String[] letters = {"a", "b", "c", "d", "e", "f", "g"};

      
      Observable.fromArray(letters)
         .contains("c")
         .subscribe(s -> result.append(s));

      System.out.println(result);
   }
}

Output

Compile and Run the code to verify the following output −

true
Advertisements