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

如何用RxKotlin将两个字符串列表按索引匹配转为自定义对象列表

RxKotlin实现方案

核心使用Rx标准zip操作符完成按索引配对合并,完整可运行代码如下:

import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.kotlin.subscribeBy

// 已定义的业务数据类
data class Names(
    var name: String,
    var lastName: String
)

fun main() {
    val nameList = arrayListOf("name1","name2","name3")
    val lastNameList = arrayListOf("lastName1","lastName2","lastName3")

    // 核心处理逻辑
    Observable.zip(
        // 把两个列表分别转为Observable对象
        Observable.fromIterable(nameList),
        Observable.fromIterable(lastNameList)
    ) { name, lastName -> 
        // 配对后的元素直接封装为Names对象
        Names(name, lastName) 
    }
    .toList() // 把逐个发射的Names对象转为单个列表事件
    .subscribeBy(
        onSuccess = { resultList ->
            // resultList就是你需要的最终输出格式
            println(resultList)
        },
        onError = { error -> error.printStackTrace() }
    )
}

运行后输出结果和要求完全一致:

[Names(name=name1, lastName=lastName1), Names(name=name2, lastName=lastName2), Names(name=name3, lastName=lastName3)]

逻辑说明

  • zip操作符的特性就是严格按照元素发射顺序(也就是原列表的索引顺序)对多个Observable的元素做一一配对,正好匹配按相同索引合并的需求
  • 如果两个输入列表长度不一致,zip会自动以较短的列表长度为准,忽略长列表中多余的元素,符合常规索引配对的处理逻辑
  • 如果你使用的是RxJava2版本,仅需要调整对应的导入包路径,核心的zip+fromIterable逻辑完全通用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:36:03