rxjava : collectInto、collect、all、any、将集合中元素以逗号连接并返回

本文深入探讨了RxJava中用于集合操作的多个算子,包括collectInto和collect用于将集合元素连接成字符串,以及all和any用于检查集合中元素的状态。通过具体的代码示例,展示了如何使用这些算子进行高效的数据处理。

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

参考:

RxJava 算术和聚合操作符

tbruyelle / RxPermissions

tbruyelle / RxPermissions : 无界面fragment

collectInto


    /**
     * 将集合中元素以逗号连接并返回
     *     public final <U> Single<U> collectInto(
     *                       final U initialValue,
     *                       BiConsumer<? super U, ? super T> collector
     *     )
     */
    private fun collectIntoName(list: MutableList<String>): String? {
        return Observable.fromIterable(list)
            .filter {
                it.isNotEmpty()
            }
            .collectInto(StringBuilder(), { stringBuilder, item ->
                if (stringBuilder.isEmpty()) {
                    stringBuilder.append(item)
                } else {
                    stringBuilder.append(", ").append(item)
                }
            })
            .blockingGet()
            .toString()
    }

collect



    /**
     * 将集合中元素以逗号连接并返回
     *     public final <U> Single<U> collect(
     *                    Callable<? extends U> initialValueSupplier,
     *                    BiConsumer<? super U, ? super T> collector
     *     )
     */
    private fun collectName(list: MutableList<String>): String? {
        return Observable.fromIterable(list)
            .filter {
                it.isNotEmpty()
            }
            .collect({ StringBuilder() }) { stringBuilder, item ->
                if (stringBuilder.isEmpty()) {
                    stringBuilder.append(item)
                } else {
                    stringBuilder.append(", ").append(item)
                }
            }
            .blockingGet()
            .toString()

    }

all




    /**
     * 集合中是否都非空
     *     public final Single<Boolean> all(Predicate<? super T> predicate) {
     */
    private fun hasNoEmptyItem(list: List<String>): Boolean? {
        return Observable.fromIterable(list)
            .all {
                it.isNotEmpty()
            }.blockingGet()
    }

 

any


    /**
     * 集合中是否包含空元素
     *     public final Single<Boolean> any(Predicate<? super T> predicate) {
     */
    private fun hasEmptyItem(list: List<String>): Boolean? {
        return Observable.fromIterable(list)
            .any {
                it.isEmpty()
            }
            .blockingGet()
    }

测试


private val lists1: MutableList<String> = mutableListOf(
    "1",
    "10",
    "18",
    "",
    "101",
    "51"
)

private val lists2: MutableList<String> = mutableListOf(
    "1",
    "10",
    "18",
    "101",
    "51"
)


println("1===========================" + collectIntoName(lists1))
println("1===========================" + collectName(lists1))
println("2===========================" + hasNoEmptyItem(lists1))
println("3===========================" + hasEmptyItem(lists1))
println("=========================================================")
println("1===========================" + collectIntoName(lists2))
println("1===========================" + collectName(lists2))
println("2===========================" + hasNoEmptyItem(lists2))
println("3===========================" + hasEmptyItem(lists2))
//1===========================1, 10, 18, 101, 51
//1===========================1, 10, 18, 101, 51
//2===========================false
//3===========================true
//=========================================================
//1===========================1, 10, 18, 101, 51
//1===========================1, 10, 18, 101, 51
//2===========================true
//3===========================false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值