RxJava2 Flowable last

本文详细解析了RxJava中Flowable的last、lastElement及lastOrError操作符的功能与使用。通过实例展示了如何获取Flowable序列中的最后一个元素,以及在序列为空时的不同处理方式。

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

目录

 

1 接口

2 图解和说明

3 测试用例


接口

Single<T>last(T defaultItem)

Returns a Single that emits only the last item emitted by this Flowable, or a default item if this Flowable completes without emitting any items.

返回仅发出此Flowable发出的最后一项的Single,如果此Flowable完成而不发出任何项,则返回默认项。

Maybe<T>lastElement()

Returns a Maybe that emits the last item emitted by this Flowable or completes if this Flowable is empty.

返回一个Maybe,它发出此Flowable发出的最后一项,或者如果此Flowable为空则完成。

Single<T>lastOrError()

Returns a Single that emits only the last item emitted by this Flowable or signals a NoSuchElementException if this Flowable is empty.

返回一个Single,它仅发出此Flowable发出的最后一项,或者如果此Flowable为空则发出NoSuchElementException信号。

 

2 图解和说明

 

3 测试用例

 @Test
    public void last() {
        System.out.println("------> last");
        Flowable.just("one","two","three").last("is empty").subscribe(new SingleObserver<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onSuccess(Object value) {
                System.out.println("onSuccess:" + value.toString());
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError:" + e.getMessage().toString());
            }
        });

        Flowable.empty().last("is empty").subscribe(new SingleObserver<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onSuccess(Object value) {
                System.out.println("onSuccess:" + value.toString());
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError:" + e.getMessage().toString());
            }
        });

        System.out.println("------> lastElement");
        Flowable.just("one","two","three").lastElement().subscribe(new MaybeObserver<String>() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onSuccess(String value) {
                System.out.println("onSuccess:" + value.toString());
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError:" + e.getMessage().toString());
            }

            @Override
            public void onComplete() {

            }
        });

        Flowable.empty().lastElement().subscribe(new MaybeObserver<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onSuccess(Object value) {
                System.out.println("onSuccess:" + value.toString());
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError:" + e.getMessage().toString());
            }

            @Override
            public void onComplete() {
                System.out.println("onComplete");
            }
        });


        System.out.println("------> lastOrError");
        Flowable.just("one","two","three").lastOrError().subscribe(new SingleObserver<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onSuccess(Object value) {
                System.out.println("onSuccess:" + value.toString());
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError:" + e.getMessage().toString());
            }
        });

        Flowable.empty().lastOrError().subscribe(new SingleObserver<Object>() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onSuccess(Object value) {
                System.out.println("onSuccess:" + value.toString());
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError:");
            }
        });


    }



------> last
onSuccess:three
onSuccess:is empty
------> lastElement
onSuccess:three
onComplete
------> lastOrError
onSuccess:three
onError:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值