In dit programma leer je om twee arrays in Java samen te voegen met en zonder arraycopy.
Om dit voorbeeld te begrijpen, moet u kennis hebben van de volgende Java-programmeeronderwerpen:
- Java-arrays
- Java voor elke lus
Voorbeeld 1: voeg twee arrays samen met behulp van arraycopy
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)); ) )
Uitvoer
(1, 2, 3, 4, 5, 6)
In het bovenstaande programma hebben we twee integer-arrays array1 en array2.
Om twee arrays te combineren (aaneenschakelen), vinden we de lengte ervan opgeslagen in respectievelijk aLen en bLen. Vervolgens maken we een nieuw integerarray-resultaat met lengte aLen + bLen.
Om beide te combineren, kopiëren we elk element in beide arrays om te resulteren door arraycopy()
function te gebruiken.
De arraycopy(array1, 0, result, 0, aLen)
functie, in eenvoudige bewoordingen, vertelt het programma om array1 te kopiëren vanaf index 0
naar resultaat van index 0
naar aLen.
Evenzo arraycopy(array2, 0, result, aLen, bLen)
vertelt for het programma om array2 te kopiëren vanaf index 0
naar result
van index aLen naar bLen.
Voorbeeld 2: twee arrays samenvoegen zonder arraycopy te gebruiken
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)); ) )
Uitvoer
(1, 2, 3, 4, 5, 6)
In het bovenstaande programma, in plaats van te gebruiken arraycopy
, kopiëren we handmatig elk element van zowel arrays array1 als array2 naar het resultaat.
We slaan de totale lengte op die nodig is voor resultaat, dwz array1.length + array2. length
. Vervolgens maken we een nieuw array-resultaat van de lengte.
Nu gebruiken we de for-each-lus om elk element van array1 te doorlopen en in het resultaat op te slaan. Na het toewijzen, verhogen we de positie pos met 1, pos++
.
Evenzo doen we hetzelfde voor array2 en slaan we elk element op in het resultaat vanaf de positie na array1.