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

Kotlin/Java标准库是否有按位合并二维数组的内置union函数?

关于Kotlin/Java二维数组按位置合并的内置函数问题

Kotlin和Java的标准库都没有提供你描述的这种“按对应位置合并二维数组”的内置函数。

需要注意的是,标准库里集合类的union方法是用来求集合的并集(去重合并元素),和你需求里的“逐位置自定义合并”完全不是一回事。你要的这类操作属于元素级别的逐元素映射合并,标准库没有专门为二维数组提供这类API。

如果你需要实现这个功能,在Kotlin里可以通过扩展函数快速实现,贴合你想要的调用风格:

// 扩展函数:对两个二维数组进行逐位置合并,支持自定义合并逻辑
fun <T, R> Array<Array<T>>.elementwiseMerge(other: Array<Array<T>>, transform: (T, T) -> R): Array<Array<R>> {
    // 先校验两个数组的维度是否一致
    require(this.size == other.size) { "两个数组的行数必须相同" }
    return this.mapIndexed { rowIndex, row ->
        require(row.size == other[rowIndex].size) { "第$rowIndex行的列数必须相同" }
        // 对每一行的元素逐对应用合并逻辑
        row.zip(other[rowIndex], transform).toTypedArray()
    }.toTypedArray()
}

使用示例:

val a = arrayOf(
    arrayOf(1, 0),
    arrayOf(0, 0)
)

val b = arrayOf(
    arrayOf(1, 0),
    arrayOf(0, 1)
)

// 调用扩展函数,传入加法合并逻辑
val result = a.elementwiseMerge(b) { da, db -> da + db }
val shouldBe = arrayOf(
    arrayOf(2, 0),
    arrayOf(0, 1)
)

// 数组内容比较要用contentDeepEquals,不能直接用==(==比较的是引用)
assert(result.contentDeepEquals(shouldBe))

Java里同样没有对应的内置方法,需要手动遍历二维数组的每一个元素,或者结合Stream API实现类似逻辑,但代码会相对繁琐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:02:19