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

Java中如何对两个List<Int>按元素位置配对合并得到嵌套列表

两个Int列表按位置配对实现方案

你之前得到笛卡尔积是因为使用了嵌套for循环,遍历第一个列表的每个元素时全量遍历了第二个列表的所有元素,才生成了所有元素的交叉组合。以下是正确实现方式:

方案1:使用Kotlin标准库内置zip函数(推荐)

Kotlin 标准库原生提供zip扩展函数,专门用于两个集合按索引位置一一配对,代码最简:

val list1 = listOf(1, 2, 3)
val list2 = listOf(4, 5, 6)

// 配对后直接转换为List<List<Int>>结构
val pairedResult = list1.zip(list2) { element1, element2 -> 
    listOf(element1, element2) 
}

默认情况下如果两个列表长度不一致,zip会以较短列表的长度为准,长列表多余的元素会被自动忽略。

方案2:手动单循环实现

如果需要自定义配对逻辑,不依赖内置函数,只需遍历公共索引即可,不要写嵌套循环:

val list1 = listOf(1, 2, 3)
val list2 = listOf(4, 5, 6)
val result = mutableListOf<List<Int>>()

// 取两个列表的最小长度作为遍历上限,避免索引越界
val commonLength = minOf(list1.size, list2.size)
for (index in 0 until commonLength) {
    result.add(listOf(list1[index], list2[index]))
}

不等长列表特殊处理

如果业务要求以较长列表长度为准,缺省位置补默认值(比如补0),可以调整为以下逻辑:

val list1 = listOf(1, 2, 3, 7)
val list2 = listOf(4, 5, 6)
val result = mutableListOf<List<Int>>()

val maxLength = maxOf(list1.size, list2.size)
for (index in 0 until maxLength) {
    val element1 = list1.getOrElse(index) { 0 }
    val element2 = list2.getOrElse(index) { 0 }
    result.add(listOf(element1, element2))
}
// 输出结果为 [[1,4], [2,5], [3,6], [7,0]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:00:03