如何在Kotlin中将两个阵列组合成一个阵列?

Rob*_*001 13 kotlin

我想从两个数组中创建一个数组.

我试着用+:

var array1 = intArrayOf(1,2,3)
var array2 = intArrayOf(4,5,6)
var array3 = array1 + array2
Run Code Online (Sandbox Code Playgroud)

但不幸的是它不起作用......我怎样才能将它们结合起来?

zsm*_*b13 19

实际上,您的确切代码适合我.在多个Kotlin版本上尝试过它.您可以operator fun IntArray.plus(elements: IntArray): IntArray此处的文档中找到用于此功能的函数,以及此处的源代码.

var array1 = intArrayOf(1, 2, 3)        // 1, 2, 3
var array2 = intArrayOf(4, 5, 6)        // 4, 5 ,6
var array3 = array1 + array2            // 1, 2, 3, 4, 5, 6
Run Code Online (Sandbox Code Playgroud)

您是想要做一些不同的事情,比如逐个添加元素并创建一个长度为3的新数组?你可以这样做:

val array4 = array1.zip(array2, Int::plus).toTypedArray()    // 5, 7, 9
Run Code Online (Sandbox Code Playgroud)

额外的toTypedArray调用是必要只有当你真正需要一个数组,否则,你可以使用List<Int>zip函数返回.


TWi*_*Rob 10

使用价差运算符:

var array3 = intArrayOf(*array1, *array2)
Run Code Online (Sandbox Code Playgroud)

当您需要在数组之间添加一些自定义元素时,这可能特别有用intArrayOf(7, *array1, 8, 9, *array2, 10, 11)

音符散布比plus-ing 更有效,因为它仅创建一个结果数组。使用上述传播示例的等效版本可能会使我们多出5倍的空间,并花费5倍的时间。