RxJava - 过滤操作符



以下是用于选择性地从可观察对象发出项目的操作符。

序号 操作符及描述
1

Debounce (去抖)

只有在超时发生且没有发出其他项目时才发出项目。

2

Distinct (去重)

只发出唯一项目。

3

ElementAt (获取指定索引元素)

只发出可观察对象发出的第 n 个项目。

4

Filter (过滤)

只发出通过给定谓词函数的项目。

5

First (获取第一个元素)

发出第一个项目或通过给定条件的第一个项目。

6

IgnoreElements (忽略元素)

不发出可观察对象的任何项目,但标记完成。

7

Last (获取最后一个元素)

发出可观察对象的最后一个元素。

8

Sample (采样)

以给定的时间间隔发出最新的项目。

9

Skip (跳过)

跳过可观察对象的前 n 个项目。

10

SkipLast (跳过最后几个元素)

跳过可观察对象的最后 n 个项目。

11

Take (获取前几个元素)

获取可观察对象的前 n 个项目。

12

TakeLast (获取最后几个元素)

获取可观察对象的最后 n 个项目。

过滤操作符示例

使用您选择的任何编辑器创建以下 Java 程序,例如在 C:\>RxJava 中。

ObservableTester.java

import io.reactivex.Observable;
//Using take operator to filter an Observable
public class ObservableTester  {
   public static void main(String[] args) {    
      String[] letters = {"a", "b", "c", "d", "e", "f", "g"};
      final StringBuilder result = new StringBuilder();
      Observable<String> observable = Observable.fromArray(letters);
      observable
         .take(2)
         .subscribe( letter -> result.append(letter));
      System.out.println(result);
   }
}

验证结果

使用 **javac** 编译器编译类,如下所示:

C:\RxJava>javac ObservableTester.java

现在运行 ObservableTester,如下所示:

C:\RxJava>java ObservableTester

它应该产生以下输出:

ab
广告