原文: https://www.programiz.com/kotlin-programming/examples/concatenate-two-arrays
在此程序中,您将学习使用arraycopy
在没有数组的情况下在 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]
在上面的程序中,我们有两个整数数组array1
和array2
。
为了合并(连接)两个数组,我们发现其长度分别存储在aLen
和bLen
中。 然后,我们创建一个长度为aLen + bLen
的新整数数组结果。
现在,为了将两者结合起来,我们使用arraycopy()
函数将两个数组中的每个元素都复制为结果。
简单来说,arraycopy(array1, 0, result, 0, aLen)
函数告诉程序将array1
从索引0
开始复制到result
从索引0
复制到aLen
。
同样,对于arraycopy(array2, 0, result, aLen, bLen)
告诉程序从索引0
开始将array2
从索引aLen
复制到bLen
。
示例 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
,而是将两个数组array1
和array2
的每个元素手动复制到result
。
我们存储result
所需的length
,即array1.length + array2.length
。 然后,我们创建一个新的长度数组结果。
现在,我们使用 for-each 循环遍历array1
的每个元素,并将其存储在result
中。 分配后,我们将位置pos
增加 1 pos++
。
同样,我们对array2
执行相同的操作,并将每个元素从array1
之后的位置存储在result
中。
以下是等效的 Java 代码:用于连接两个数组的 Java 程序。