You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将RxJava2中两个Single<List>合并为一个列表?

合并两个RxJava Single数据源为Single<List>

没问题!你想用zip方法的思路完全正确——zip正是用来等待多个Observable(包括Single)都发射数据后,再合并结果的操作符。结合你的代码,这里有两种简洁的实现方式:

方式1:利用Kotlin协变特性自动转型

因为Type1和Type2都继承自Type0,Kotlin的List协变特性允许我们直接将两个子类列表合并为父类列表:

val mergedSingle: Single<List<Type0>> = Single.zip(source1, source2) { list1, list2 ->
    list1 + list2
}

方式2:显式转型(适合需要明确类型转换场景)

如果需要更清晰地展示类型转换逻辑,可以显式将每个元素转型为Type0:

val mergedSingle: Single<List<Type0>> = Single.zip(source1, source2) { list1, list2 ->
    list1.map { it as Type0 } + list2.map { it as Type0 }
}

原理说明

  • Single.zip会同时订阅source1和source2,只有当两个Single都成功返回各自的列表数据后,才会执行传入的合并lambda。
  • 合并后的lambda返回的List<Type0>会被包装成新的Single,也就是你需要的Single<List<Type0>>,后续可以直接用subscribe或者其他操作符处理这个结果。

内容的提问来源于stack exchange,提问作者antanas_sepikas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:20:59