在這個(gè)程序中,您將學(xué)習(xí)使用arraycopy和不使用arraycopy連接Kotlin中的兩個(gè)數(shù)組。
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)) }
運(yùn)行該程序時(shí),輸出為:
[1, 2, 3, 4, 5, 6]
在上面的程序中,我們有兩個(gè)整數(shù)數(shù)組array1和array2。
為了合并(連接)兩個(gè)數(shù)組,我們找到其長度分別存儲在aLen和bLen中。然后,我們創(chuàng)建一個(gè)長度為aLen + bLen 的新整數(shù)數(shù)組 result。
現(xiàn)在,為了將兩者結(jié)合在一起,我們使用arraycopy()函數(shù)將兩個(gè)數(shù)組中的每個(gè)元素都復(fù)制為 result。
arraycopy(array1, 0, result, 0, aLen)函數(shù),簡單來說,程序?qū)rray1從索引0復(fù)制到result從索引0復(fù)制到aLen。
同樣,對于arraycopy(array2,0,result,aLen,bLen)告訴程序?qū)rray2從索引0復(fù)制到result從索引aLen復(fù)制到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)) }
運(yùn)行該程序時(shí),輸出為:
[1, 2, 3, 4, 5, 6]
在上面的程序中,我們沒有使用arraycopy,而是手動復(fù)制數(shù)組array1和array2的每個(gè)元素到result。
我們存儲 result 所需的總長度,即 array1.length + array2. length。然后,我們創(chuàng)建一個(gè)新的長度數(shù)組 result。
現(xiàn)在,我們使用for-each循環(huán)來遍歷array1的每個(gè)元素并將其存儲在結(jié)果中。賦值后,我們增加位置pos 1, pos++。
同樣地,我們對array2執(zhí)行同樣的操作,并從array1之后的位置開始存儲result中的每個(gè)元素。
這是等效的Java代碼:連接兩個(gè)數(shù)組的Java程序。