在這個(gè)程序中,您將學(xué)習(xí)使用arraycopy和不使用arraycopy在Java中連接兩個(gè)數(shù)組。
import java.util.Arrays; public class Concat { public static void main(String[] args) { int[] array1 = {1, 2, 3}; int[] array2 = {4, 5, 6}; int aLen = array1.length; int bLen = array2.length; int[] result = new int[aLen + bLen]; System.arraycopy(array1, 0, result, 0, aLen); System.arraycopy(array2, 0, result, aLen, bLen); System.out.println(Arrays.toString(result)); } }
運(yùn)行該程序時(shí),輸出為:
[1, 2, 3, 4, 5, 6]
在上面的程序中,我們有兩個(gè)整數(shù)數(shù)組array1和array2。
為了合并(連接)兩個(gè)數(shù)組,我們將其長(zhǎng)度分別存儲(chǔ)在aLen和bLen中。然后,我們創(chuàng)建一個(gè)長(zhǎng)度為aLen + bLen的新整數(shù)數(shù)組結(jié)果。
現(xiàn)在,為了將兩者結(jié)合在一起,我們使用arraycopy()函數(shù)將兩個(gè)數(shù)組中的每個(gè)元素都復(fù)制到結(jié)果。
函數(shù)arraycopy(array1, 0, result, 0, aLen)簡(jiǎn)單地告訴程序從索引0開(kāi)始將array1復(fù)制到從索引0復(fù)制到aLen的結(jié)果。
同樣,arraycopy(array2, 0, result, aLen, bLen)告訴程序從索引0開(kāi)始將array2復(fù)制到結(jié)果,從索引aLen復(fù)制到bLen。
import java.util.Arrays; public class Concat { public static void main(String[] args) { int[] array1 = {1, 2, 3}; int[] array2 = {4, 5, 6}; int length = array1.length + array2.length; int[] result = new int[length]; int pos = 0; for (int element : array1) { result[pos] = element; pos++; } for (int element : array2) { result[pos] = element; pos++; } System.out.println(Arrays.toString(result)); } }
運(yùn)行該程序時(shí),輸出為:
[1, 2, 3, 4, 5, 6]
在上面的程序中,我們沒(méi)有使用arraycopy,而是手動(dòng)復(fù)制數(shù)組array1和array2的每個(gè)元素到result。
我們存儲(chǔ)result所需的總數(shù)length,即array1.length + array2. length。然后,我們創(chuàng)建一個(gè)新的長(zhǎng)度數(shù)組結(jié)果。
現(xiàn)在,我們使用for-each循環(huán)遍歷array1的每個(gè)元素并將其存儲(chǔ)在結(jié)果中。 分配后,我們將位置pos增加1,pos ++。
同樣,我們對(duì)array2執(zhí)行相同的操作,并從array1之后的位置開(kāi)始存儲(chǔ)result中的每個(gè)元素。