RxJava 过滤操作符 ofType

来源:互联网 发布:最帅程序员 编辑:程序博客网 时间:2024/05/29 21:32

.ofType(class)  指定某个类型的class,过滤属于这个类型的的结果,其它抛弃

例子:

      Observable.just("first", 2, 3, "four").ofType(Integer.class).subscribe(new Action1<Integer>() {            @Override            public void call(Integer integer) {                LogUtils.d("------>call():" + integer);            }        });

结果:

03-01 13:03:18.350 7828-7828/com.rxandroid.test1 D/----->: ------>call():2
03-01 13:03:18.350 7828-7828/com.rxandroid.test1 D/----->: ------>call():3

在这里过滤掉了非Integer类型的数据,只有2,3符合要求


当传递Object.class时并不会过滤任何数据,所有数据都是其子类

结合filter操作符演示一个例子:找出集合中大于5的数

 Object[] data = {"first", "2", 3, "four", 5, 6, 7};        Observable.from(data).ofType(Integer.class).filter(new Func1<Integer, Boolean>() {            @Override            public Boolean call(Integer integer) {                return integer > 5;            }        }).subscribe(new Action1<Integer>() {            @Override            public void call(Integer integer) {                LogUtils.d("------>call():" + integer);            }        });

结果为:

03-01 13:19:48.210 12414-12414/com.rxandroid.test1 D/----->: ------>call():6
03-01 13:19:48.210 12414-12414/com.rxandroid.test1 D/----->: ------>call():7



1 0