RxJava2 Flowable collect & collectInto

本文详细介绍了RxJava2中的Flowable的collect和collectInto接口,通过图解和测试用例分析了这两个操作符的使用方法和应用场景。collectInto允许将数据收集到指定的对象中,而BiFunction函数可以执行复杂的数据处理操作。

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

目录

collect& collectInto接口

collect& collectInto图解

collect& collectInto测试用例

collect& collectInto测试用例分析


collect& collectInto接口

<U> Single<U>collect(Callable<? extends U> initialItemSupplier, BiConsumer<? super U,? superT> collector)

将源Publisher发出的项收集到一个可变数据结构中,并返回发出此结构的Single。

<U> Single<U>

collectInto(U initialItem, BiConsumer<? super U,? super T> collector)

将源Publisher发出的项收集到一个可变数据结构中,并返回发出此结构的Single。

collect& collectInto图解

源码中指向跟reduce使用同样的图解,图上仅仅是单纯的两者相加,但是这里BiFunction函数中可以做更多事情,如果call返回的不是数字,是其他的类型,或者可以做减乘除运算,都是可以的。

 

collect& collectInto测试用例

测试代码
 @Test
    public void collect() {
        Single single = Flowable.just(5, 7, 9).collect(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                return 3;
            }
        }, new BiConsumer<Integer, Integer>() {
            @Override
            public void accept(Integer v1, Integer v2) throws Exception {
                //v1是上面call返回的3,v2是冲just中发射的数据
                System.out.println("v1:" + v1 + ",v2:" + v2);
            }
        });

        single.subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer v3) throws Exception {
                //v3是上面call返回的3
                System.out.println("v3:"+v3);
            }
        });

        Flowable.just(30, 80, 90).collectInto(10, new BiConsumer<Integer, Integer>() {
            @Override
            public void accept(Integer v4, Integer v5) throws Exception {
                System.out.println("v4:" + v4 + ",v5:" + v5);
            }
        }).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer v6) throws Exception{
                System.out.println("v6:" + v6);
            }
        });
    }

测试结果:
v1:3,v2:5
v1:3,v2:7
v1:3,v2:9
v3:3
v4:10,v5:30
v4:10,v5:80
v4:10,v5:90
v6:10

 

collect& collectInto测试用例分析

上面同时做了collect& collectInto的测试用例,可以看到,基本上就是第一个参数所生成的值,可以被传递到指定指定BiFunciton函数中,在BiFunciton函数中可以做相应的操作,使用场景比较好把握。

 

其他操作符

delay delaySubscription(辅助操作符)

delaySubscription(辅助操作符)

switchIfEmpty(条件操作符)

debounce(过滤操作符)去重复操作

count(统计操作符)

contains(条件操作符)

concatWith(连接操作符)

concatMap(变换操作符)

collect & collectInto

cast

cache

buffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值