在这个程序中,您将学习使用arraycopy和不使用arraycopy连接Kotlin中的两个数组。
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 的新整数数组 result。
现在,为了将两者结合在一起,我们使用arraycopy()函数将两个数组中的每个元素都复制为 result。
arraycopy(array1, 0, result, 0, aLen)函数,简单来说,程序将array1从索引0复制到result从索引0复制到aLen。
同样,对于arraycopy(array2,0,result,aLen,bLen)告诉程序将array2从索引0复制到result从索引aLen复制到bLen。
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 所需的总长度,即 array1.length + array2. length。然后,我们创建一个新的长度数组 result。
现在,我们使用for-each循环来遍历array1的每个元素并将其存储在结果中。赋值后,我们增加位置pos 1, pos++。
同样地,我们对array2执行同样的操作,并从array1之后的位置开始存储result中的每个元素。
这是等效的Java代码:连接两个数组的Java程序。