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

Kotlin中如何更优雅地实现两个列表的全元素配对?

实现两个列表的全元素配对(笛卡尔积)

首先要明确:zip函数并不适合这个场景——zip是将两个列表对应位置的元素配对(比如list1[0]配list2[0],list1[1]配list2[1]),而你需要的是所有元素的全组合(笛卡尔积),两者逻辑完全不同。

在Kotlin中,用flatMap + map的组合就能简洁实现需求,替代嵌套循环:

val list1 = listOf(1, 2, 3)
val list2 = listOf('A', 'B', 'C')

val result = list1.flatMap { item1 ->
    list2.map { item2 ->
        item1 to item2 // 等价于Pair(item1, item2)
    }
}

println(result)
// 输出结果:[(1, A), (1, B), (1, C), (2, A), (2, B), (2, C), (3, A), (3, B), (3, C)]

代码逻辑说明:

  • flatMap遍历list1的每个元素,对每个元素item1,执行后续的map操作;
  • map遍历list2的每个元素item2,将item1和item2配对成Pair;
  • flatMap会把所有map生成的子列表合并成一个单一列表,最终得到所有可能的元素配对。

这种写法相比嵌套循环的优势:

  • 无需手动创建并维护可变列表(mutableListOf),代码更简洁;
  • 采用函数式编程风格,逻辑表达更直观,可读性更强;
  • 默认生成不可变列表,符合Kotlin推崇的不可变优先原则。

内容的提问来源于stack exchange,提问作者Page not found

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:37:07