The filter() operator accepts Predicate<T> for a given Observable<T>. This means that you provide it a lambda that qualifies each emission by mapping it to a Boolean value, and emissions with false will not go forward.
For instance, you can use filter() to only allow string emissions that are not five characters in length:
import io.reactivex.Observable; public class Launcher { public static void main(String[] args) { Observable.just("Alpha", "Beta", "Gamma", "Delta", "Epsilon") .filter(s -> s.length() != 5) subscribe(s -> System.out.println("RECEIVED: " + s)); } }
The output of the preceding code snippet is as follows:
RECEIVED: Beta RECEIVED: Epsilon
The filter() function is probably the most commonly used operator to suppress emissions.
Note that if all emissions fail to meet your criteria, the returned Observable will be empty, with no emissions occurring before onComplete() is called.