JAVA语言之RxJava操作符-过滤操作符讲解
小标 2018-07-13 来源 : 阅读 695 评论 0

摘要:本文主要向大家介绍了JAVA语言之RxJava操作符-过滤操作符讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之RxJava操作符-过滤操作符讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

通过设置指定的过滤条件,当且仅当该事件满足条件,就将该事件过滤(不发送)

filter

过滤特定条件的事件

Observable.create(new Observable.OnSubscribe<integer>() {

            @Override

            public void call(Subscriber<!--? super Integer--> subscriber) {

                subscriber.onNext(1);

                subscriber.onNext(2);

                subscriber.onNext(3);

                subscriber.onNext(4);

                subscriber.onNext(5);

            }

        }).filter(new Func1<integer, boolean="">() {

            @Override

            public Boolean call(Integer integer) {

                return integer > 3;

            }

        }).subscribe(new Observer<integer>() {

            @Override

            public void onCompleted() {

 

            }

 

            @Override

            public void onError(Throwable e) {

 

            }

 

            @Override

            public void onNext(Integer integer) {

                Log.d(":..nht", integer + "");

            }

        });

 

12-20 22:30:00.137 16244-16244/com.sankuai.moviepro D/:..nht: 4

12-20 22:30:00.137 16244-16244/com.sankuai.moviepro D/:..nht: 5

 

解释:

过滤掉小于等于3的事件</integer></integer,></integer>

   

oftype

过滤 特定数据类型的数据

Observable.just(1, "carson", 3, "ho", 5)

                .ofType(Integer.class)

                .subscribe(new Observer<integer>() {

                    @Override

                    public void onCompleted() {

 

                    }

 

                    @Override

                    public void onError(Throwable e) {

 

                    }

 

                    @Override

                    public void onNext(Integer integer) {

                        Log.d(":..nht", integer + "");

                    }

                });

 

12-20 22:33:15.354 17503-17503/? D/:..nht: 1

12-20 22:33:15.355 17503-17503/? D/:..nht: 3

12-20 22:33:15.355 17503-17503/? D/:..nht: 5

</integer>

   

skip/skiplast

跳过某个事件

// 使用1:根据顺序跳过数据项

        Observable.just(1, 2, 3, 4, 5)

                .skip(1) // 跳过正序的前1项

                .skipLast(2) // 跳过正序的后2项

                  .subscribe(new Consumer<integer>() {

                      @Override

                      public void accept( Integer integer) throws Exception {

                          Log.d(TAG,"获取到的整型事件元素是: "+ integer);

                      }

        });

 

// 使用2:根据时间跳过数据项

        // 发送事件特点:发送数据0-5,每隔1s发送一次,每次递增1;第1次发送延迟0s

        Observable.intervalRange(0, 5, 0, 1, TimeUnit.SECONDS)

                .skip(1, TimeUnit.SECONDS) // 跳过第1s发送的数据

                .skipLast(1, TimeUnit.SECONDS) // 跳过最后1s发送的数据

                .subscribe(new Consumer<long>() {

 

                    @Override

                    public void accept( Long along ) throws Exception {

                        Log.d(TAG,"获取到的整型事件元素是: "+ along);

                    }

                });

</long></integer>

   

distinct/distinctUntilChanged

过滤事件序列中重复的事件 / 连续重复的事件

// 使用1:过滤事件序列中重复的事件

        Observable.just(1, 2, 3, 1 , 2 )

                .distinct()

                .subscribe(new Consumer<integer>() {

                      @Override

                      public void accept( Integer integer) throws Exception {

                          Log.d(TAG,"不重复的整型事件元素是: "+ integer);

                      }

        });

 

        // 使用2:过滤事件序列中 连续重复的事件

        // 下面序列中,连续重复的事件 = 3、4

        Observable.just(1,2,3,1,2,3,3,4,4 )

                .distinctUntilChanged()

                .subscribe(new Consumer<integer>() {

                    @Override

                    public void accept( Integer integer) throws Exception {

                        Log.d(TAG,"不连续重复的整型事件元素是: "+ integer);

                    }

                });</integer></integer>

以上就是职坐标整理发布关于JAVA的介绍,先祝大家对它有了一定的了解吧,了解更多内容,请关注职坐标编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程