跳到主要内容

Kotlin 程序:连接两个数组

示例1:使用arraycopy合并两个数组

import java.util.Arrays

fun main(args: Array<String>) {
val array1 = intArrayOf(1, 2, 3)
val array2 = intArrayOf(4, 5, 6)

val aLen = array1.size
val bLen = array2.size
val result = IntArray(aLen + bLen)

System.arraycopy(array1, 0, result, 0, aLen)
System.arraycopy(array2, 0, result, aLen, bLen)

println(Arrays.toString(result))
}

当运行程序时,输出结果将为:

[1, 2, 3, 4, 5, 6]

在上面的程序中,我们有两个整数数组 array1array2

为了合并(连接)这两个数组,我们分别找到它们的长度,分别存储在 aLenbLen 中。然后,我们创建一个新的整数数组 result,其长度为 aLen + bLen

现在,为了合并它们,我们使用 arraycopy() 函数将两个数组中的每个元素复制到 result 中。

arraycopy(array1, 0, result, 0, aLen) 函数简单来说告诉程序从索引 0 开始复制 array1result,从索引 0aLen

同样,对于 arraycopy(array2, 0, result, aLen, bLen),它告诉程序从索引 0 开始复制 array2result,从索引 aLenbLen

示例2:不使用arraycopy合并两个数组

import java.util.Arrays

fun main(args: Array<String>) {
val array1 = intArrayOf(1, 2, 3)
val array2 = intArrayOf(4, 5, 6)

val length = array1.size + array2.size

val result = IntArray(length)
var pos = 0
for (element in array1) {
result[pos] = element
pos++
}

for (element in array2) {
result[pos] = element
pos++
}

println(Arrays.toString(result))
}

当运行程序时,输出结果将为:

[1, 2, 3, 4, 5, 6]

在上面的程序中,我们没有使用 arraycopy,而是手动将 array1array2 的每个元素复制到 result 中。

我们存储了 result 所需的总长度,即 array1.length + array2. length。然后,我们创建一个新的长度为 length 的数组 result

现在,我们使用 for-each 循环来循环遍历 array1 的每个元素,并将其存储在 result 中。在赋值后,我们将位置 pos 增加 1,pos++

同样,我们对 array2 做同样的操作,并将每个元素存储在 result 中,从 array1 之后的位置开始。

以下是等效的Java代码:Java程序:合并两个数组