logo

Hoe twee arrays in Java samen te voegen

Het samenvoegen van twee arrays in Java is vergelijkbaar met het samenvoegen of combineren van twee arrays in één arrayobject. We moeten twee arrays zo samenvoegen dat de array-elementen hun oorspronkelijke volgorde in de nieuw samengevoegde array behouden. De elementen van de eerste array gaan vooraf aan de elementen van de tweede array in de nieuw samengevoegde array. Bijvoorbeeld:

 int[] arr1={1, 2, 3, 4, 5, 6}; //first array int[] arr2={7, 8, 9, 0}; //second array int[] arr3={1, 2, 3, 4, 5, 6, 7, 8, 9, 0} //resultant array 

Er zijn de volgende manieren om twee arrays samen te voegen:

  • Java arraykopie() methode
  • Zonder te gebruiken arraykopie() methode
  • Java Collecties
  • Java Stroom API

Java-arraycopy()-methode

Java arraykopie() is de werkwijze Systeem klasse waartoe behoort java.lang pakket. Het kopieert een array van de opgegeven bronarray naar de opgegeven positie van de doelarray. Het aantal gekopieerde elementen is gelijk aan het lengteargument.

Syntaxis:

Javafx
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parameters

    bron: Het is een bronarray.bron_positie: Startpunt in de bronarray.bestemming: Het is een bestemmingsarray.bestemming_positie: Startpositie in de doelarray.lengte: Het aantal array-elementen dat moet worden gekopieerd

Het gooit NullPointerException als de bron- of doelarray nul is. Het gooit ook ArrayIndexOutOfBoundsException als :

    bron_positieof bestemming_positie of lengte is negatief.bron_positie+lengtegroter is dan de lengte van de bronarray, of bestemmingspositie+lengte is groter dan de lengte van de doelarray.

Voorbeeld van de arraycopy()-methode

In het volgende voorbeeld hebben we twee integer-arrays gemaakt eersteArray En tweedeArray . Om twee arrays samen te voegen, vinden we de lengte ervan en worden deze respectievelijk opgeslagen in de variabelen fal en sal. Daarna maken we een nieuwe integer-array resultaat waarin de som van de lengte van beide arrays wordt opgeslagen. Kopieer nu elk element van beide arrays naar de resultaatarray met behulp van arraykopie() functie.

 import java.util.Arrays; public class MergeArrayExample1 { public static void main(String[] args) { int[] firstArray = {23,45,12,78,4,90,1}; //source array int[] secondArray = {77,11,45,88,32,56,3}; //destination array int fal = firstArray.length; //determines length of firstArray int sal = secondArray.length; //determines length of secondArray int[] result = new int[fal + sal]; //resultant array of size first array and second array System.arraycopy(firstArray, 0, result, 0, fal); System.arraycopy(secondArray, 0, result, fal, sal); System.out.println(Arrays.toString(result)); //prints the resultant array } } 

Uitgang:

bellen sorteren in Java
 [23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3] 

Laten we nog een voorbeeld bekijken waarin we bron_array, bestemming, bestemming_positie, bronpositie en lengte hebben gespecificeerd. We kunnen de array samenvoegen op basis van de opgegeven posities en lengte.

Voorbeeld

 import java.lang.*; public class MergeArrayExample2 { public static void main(String[] args) { int firstArray[] = { 11,22,33,44,55,98,76,54,60}; int secondArray[] = {66,77,88,99,22,67,21,90,80,70}; int source_arr[], sourcePos, dest_arr[], destPos, len; source_arr = firstArray; dest_arr = secondArray; sourcePos = 2; destPos = 4; len = 3; // Print elements of source System.out.print(&apos;source_array : &apos;); for (int i = 0; i <firstarray.length; i++) system.out.print(firstarray[i] + ' '); system.out.println(''); system.out.println('sourcepos : sourcepos); print elements of destination system.out.print('dest_array for (int i="0;" < secondarray.length; system.out.print(secondarray[i] system.out.println('destpos destpos); system.out.println('len len); invoking arraycopy() method system.arraycopy(source_arr, sourcepos, dest_arr,destpos, after system.out.print('resultant array } pre> <p> <strong>Output:</strong> </p> <pre> source_array: 11 22 33 44 55 98 76 54 60 sourcePos: 2 dest_array: 66 77 88 99 22 67 21 90 80 70 destPos: 4 len: 3 Resultant array: 66 77 88 99 33 44 55 90 80 70 </pre> <h2>Without using arraycopy() method</h2> <p> <strong>Example of merging two arrays</strong> </p> <p>In the following example, we have initialized two arrays firstArray and secondArray of integer type. Manually copy the each element of both arrays to mergedArray and convert that array into String by using toString() method of Array class.</p> <pre> public class MergeArrayExample3 { public static void main(String[] args) { int[] firstArray = {56,78,90,32,67,12}; //initialized array int[] secondArray = {11,14,9,5,2,23,15}; int length = firstArray.length + secondArray.length; //add the length of firstArray into secondArray int[] mergedArray = new int[length]; //resultant array int pos = 0; for (int element : firstArray) //copying elements of secondArray using for-each loop { mergedArray[pos] = element; pos++; //increases position by 1 } for (int element : secondArray) //copying elements of firstArray using for-each loop { mergedArray[pos] = element; pos++; } System.out.println(Arrays.toString(mergedArray)); //prints the resultant array } } </pre> <p> <strong>Output:</strong> </p> <pre> [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] </pre> <h2>Using Collections</h2> <p> <strong>Example of merging two arrays in Java</strong> </p> <p>In the following example, we have initialized two arrays str1 and str2 of String type. After that we have created a list view of str1 by using the Arrays.asList() method. Now we have created the list view of str2 and added all the elements of str2 into the list. Again perform conversion from list to array and store the resultant array into str3 variable.</p> <pre> import java.util.*; public class MergeArrayExample4 { public static void main(String args[]) { String str1[] = { &apos;A&apos;, &apos;E&apos;, &apos;I&apos; }; //source array String str2[] = { &apos;O&apos;, &apos;U&apos; }; //destination array List list = new ArrayList(Arrays.asList(str1)); //returns a list view of an array //returns a list view of str2 and adds all elements of str2 into list list.addAll(Arrays.asList(str2)); Object[] str3 = list.toArray(); //converting list to array System.out.println(Arrays.toString(str3)); //prints the resultant array } } </pre> <p> <strong>Output:</strong> </p> <pre> [A, E, I, O, U] </pre> <h2>Java Stream API</h2> <p> <strong>Stream.of() method</strong> </p> <p>The <strong>Stream.of()</strong> method of Stream interface returns a sequential ordered stream whose elements are the values.</p> <p> <strong>Syntax</strong> </p> <pre> static Stream of(T....values) </pre> <p>Where M <strong>T</strong> is the type of stream elements. The method accepts <strong>values</strong> (elements of the new stream).</p> <p> <strong>flatMap() method</strong> </p> <p>The <strong>flatMap()</strong> method is the method of Stream interface. It returns a stream consisting of the result.</p> <p> <strong>Syntax</strong> </p> <pre> Stream flatMap(Function<? Super T, ? extends Stream> mapper) </pre> <p>Where <strong>R</strong> is the element type of new stream. The method accepts a <strong>mapper</strong> (a function to apply to each element which produces a stream of new values) as a parameter.</p> <p> <strong>toArray() method</strong> </p> <p>The <strong>toArray()</strong> method of Stream interface returns an array containing the elements of the stream.</p> <p> <strong>Syntax</strong> </p> <pre> Object[] toArray() </pre> <p> <strong>Example of merging two arrays using Stream API</strong> </p> <pre> import java.util.stream.Stream; import java.util.Arrays; import java.io.*; public class MergeArrayExample5 { // function to merge two arrays public static Object[] mergeArray(T[] arr1, T[] arr2) { return Stream.of(arr1, arr2).flatMap(Stream::of).toArray(); } public static void main (String[] args) { Integer[] firstArray = new Integer[]{13,12,11,6,9,3}; //source array Integer[] secondArray = new Integer[]{78,34,56,67,2,11,7}; //destination array Object[] mergedArray = mergeArray(firstArray,secondArray); //merged array System.out.println(&apos;Merged array: &apos;+ Arrays.toString(mergedArray)); } } </pre> <p> <strong>Output:</strong> </p> <pre> Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7] </pre> <hr></firstarray.length;>

Zonder de methode arraycopy() te gebruiken

Voorbeeld van het samenvoegen van twee arrays

In het volgende voorbeeld hebben we twee arrays firstArray en secondArray van het type geheel getal geïnitialiseerd. Kopieer elk element van beide arrays handmatig naar mergedArray en converteer die array naar String met behulp van de toString()-methode van de Array-klasse.

 public class MergeArrayExample3 { public static void main(String[] args) { int[] firstArray = {56,78,90,32,67,12}; //initialized array int[] secondArray = {11,14,9,5,2,23,15}; int length = firstArray.length + secondArray.length; //add the length of firstArray into secondArray int[] mergedArray = new int[length]; //resultant array int pos = 0; for (int element : firstArray) //copying elements of secondArray using for-each loop { mergedArray[pos] = element; pos++; //increases position by 1 } for (int element : secondArray) //copying elements of firstArray using for-each loop { mergedArray[pos] = element; pos++; } System.out.println(Arrays.toString(mergedArray)); //prints the resultant array } } 

Uitgang:

 [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] 

Verzamelingen gebruiken

Voorbeeld van het samenvoegen van twee arrays in Java

In het volgende voorbeeld hebben we twee arrays str1 en str2 van het type String geïnitialiseerd. Daarna hebben we een lijstweergave van str1 gemaakt met behulp van de methode Arrays.asList(). Nu hebben we de lijstweergave van str2 gemaakt en alle elementen van str2 aan de lijst toegevoegd. Voer opnieuw de conversie uit van lijst naar array en sla de resulterende array op in de str3-variabele.

 import java.util.*; public class MergeArrayExample4 { public static void main(String args[]) { String str1[] = { &apos;A&apos;, &apos;E&apos;, &apos;I&apos; }; //source array String str2[] = { &apos;O&apos;, &apos;U&apos; }; //destination array List list = new ArrayList(Arrays.asList(str1)); //returns a list view of an array //returns a list view of str2 and adds all elements of str2 into list list.addAll(Arrays.asList(str2)); Object[] str3 = list.toArray(); //converting list to array System.out.println(Arrays.toString(str3)); //prints the resultant array } } 

Uitgang:

 [A, E, I, O, U] 

Java Stream-API

Stream.of() methode

Java-standaardparameters

De Stroom van() De methode van de Stream-interface retourneert een sequentieel geordende stream waarvan de elementen de waarden zijn.

q4 maanden

Syntaxis

 static Stream of(T....values) 

Waar M T is het type stroomelementen. De methode accepteert waarden (elementen van de nieuwe stroom).

flatMap()-methode

De flatMap() methode is de methode van de Stream-interface. Het retourneert een stream bestaande uit het resultaat.

Syntaxis

 Stream flatMap(Function<? Super T, ? extends Stream> mapper) 

Waar R is het elementtype van de nieuwe stream. De methode accepteert a kaartmaker (een functie die op elk element moet worden toegepast en die een stroom nieuwe waarden produceert) als parameter.

toArray()-methode

De toArray() methode van Stream-interface retourneert een array met de elementen van de stream.

Java-array om weer te geven

Syntaxis

 Object[] toArray() 

Voorbeeld van het samenvoegen van twee arrays met behulp van Stream API

 import java.util.stream.Stream; import java.util.Arrays; import java.io.*; public class MergeArrayExample5 { // function to merge two arrays public static Object[] mergeArray(T[] arr1, T[] arr2) { return Stream.of(arr1, arr2).flatMap(Stream::of).toArray(); } public static void main (String[] args) { Integer[] firstArray = new Integer[]{13,12,11,6,9,3}; //source array Integer[] secondArray = new Integer[]{78,34,56,67,2,11,7}; //destination array Object[] mergedArray = mergeArray(firstArray,secondArray); //merged array System.out.println(&apos;Merged array: &apos;+ Arrays.toString(mergedArray)); } } 

Uitgang:

 Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]