只發(fā)射通過了謂詞測(cè)試的數(shù)據(jù)項(xiàng)
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/filter.c.png" alt="filter" />
Filter
操作符使用你指定的一個(gè)謂詞函數(shù)測(cè)試數(shù)據(jù)項(xiàng),只有通過測(cè)試的數(shù)據(jù)才會(huì)被發(fā)射。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/filter.png" alt="filter" />
RxJava將這個(gè)操作符實(shí)現(xiàn)為filter
函數(shù)。
示例代碼
Observable.just(1, 2, 3, 4, 5)
.filter(new Func1<Integer, Boolean>() {
@Override
public Boolean call(Integer item) {
return( item < 4 );
}
}).subscribe(new Subscriber<Integer>() {
@Override
public void onNext(Integer item) {
System.out.println("Next: " + item);
}
@Override
public void onError(Throwable error) {
System.err.println("Error: " + error.getMessage());
}
@Override
public void onCompleted() {
System.out.println("Sequence complete.");
}
});
輸出
Next: 1
Next: 2
Next: 3
Sequence complete.
filter
默認(rèn)不在任何特定的調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/ofClass.png" alt="ofType" />
ofType
是filter
操作符的一個(gè)特殊形式。它過濾一個(gè)Observable只返回指定類型的數(shù)據(jù)。
ofType
默認(rèn)不在任何特定的調(diào)度器上指定。