# Kotlin 程序：连接两个数组

> 原文： [https://www.programiz.com/kotlin-programming/examples/concatenate-two-arrays](https://www.programiz.com/kotlin-programming/examples/concatenate-two-arrays)

#### 在此程序中，您将学习使用`arraycopy`在没有数组的情况下在 Kotlin 中连接两个数组。

## 示例 1：使用`arraycopy`连接两个数组

```kt
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))
}
```

运行该程序时，输出为：

```kt
[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`的情况下连接两个数组

```kt
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))
}
```

运行该程序时，输出为：

```kt
[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 程序](/java-programming/examples/concatenate-two-arrays "Java program to concatenate two arrays")。