Rxjava条件和布尔操作符

本文介绍RxJava中的条件操作符如amb、skipUntil、takeWhile等,以及布尔操作符如all、contains等的使用方法与示例,帮助读者理解和掌握这些操作符的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rxjava条件操作符

条件操作符作用
amb给定多个Observable,只让第一个发射数据的Observable发射数据
defaultIfEmpty发射来自原始的Observable的数据,如果原始Observable没有发射数据则发射一个默认数据
skipUtil丢弃原始Observable发射的数据,直到第二个Observable发射了一个数据然后发射原始Observable的剩余数据
skipWhile丢弃原始Observable发射的数据,直到一个特定的条件为假,然后发射原始Observable剩余的数据
takeUtile发射来自原始Observable的数据,直到第二个Observable发射了一个数据或一个通知
takeWhile发射原始Observable的数据,直到一个特定条件为真,然后跳过剩余的数据。
amb

给两个或多个Observable,它只会发射首先发射数据的Observable的全部数据

//输出结果 1,2,3
Observable.ambArray(
                Observable.just(1,2,3), Observable.just(4,5,6)
        ).subscribe(s -> System.out.println(s));
//给第一个Observable添加延迟,结果将是 4,5,6
Observable.ambArray(
                Observable.just(1,2,3).delay(1, TimeUnit.SECONDS), Observable.just(4,5,6)
        ).subscribe(s -> System.out.println(s));
skipUtil skipWhile
//过时间4s后,第二个Observable发射了一个数据,则第一个Observable会发射剩下的全部数据
Observable.intervalRange(1,9, 0, 1 ,TimeUnit.SECONDS) //第一个Observable
                .skipUntil(Observable.timer(4, TimeUnit.SECONDS)) //第二个Observable
                .subscribe(s -> System.out.println(s));

//虽然订阅了Observable,但忽略了它的全部数据,直到skipWhile的条件不成立,则发射全部剩下的数据。
Observable.just(1,2,3,4,5)
                .skipWhile(s -> s<=2)
                .subscribe(result -> System.out.println(result));
takeUtil takeWhile

他们与skip性质的操作符正好相反

//数据正常接受,但当发射数据3时,这时候takeUtil中就会发射一个数据,之后Observable的后续数据就会全部丢弃
//输出为 1,2,3
Observable.just(1,2,3,2,5)
                .takeUntil(s -> s==3)
                .subscribe(result -> System.out.println(result));
//当数据发送4时,条件不成立,则会丢弃44以后的数据
//输出为 1,23
Observable.just(1,2,3,4,5)
                .takeWhile(s-> s <=3)
                .subscribe(result -> System.out.println(result));

Rxjava布尔操作符。

布尔操作符作用
all判断是否所有数据都满足条件
contains判断Observable发射的数据是否包含一个特定的值
exists, isEmpty判断Observable是否发射了一个值
sequenceEqual判断两个Observables发射的序列是否相等
all 与contains
//这里输出的是 true,判断结果。
Observable.just(1,2,3)
    .all(i -> i<10)
    .subscribe(s -> System.out.println(s));
//判断结果 输出 true 
Observable.just(1,2,3)
                .contains(2)
                .subscribe(s -> System.out.println(s));
sequenceEqual
Observable.sequenceEqual(Observable.just(1,2,3), Observable.just(1,2,3))
                .subscribe(s -> System.out.println(s));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值