logo

Hur man slår samman två arrayer i Java

Att slå samman två arrayer i Java liknar att sammanfoga eller kombinera två arrayer i ett enda arrayobjekt. Vi måste slå samman två arrayer så att arrayelementen bibehåller sin ursprungliga ordning i den nyligen sammanslagna arrayen. Elementen i den första arrayen föregår elementen i den andra arrayen i den nyligen sammanslagna arrayen. Till exempel:

 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 

Det finns följande sätt att slå samman två arrayer:

  • Java arraycopy() metod
  • Utan att använda arraycopy() metod
  • Java Samlingar
  • Java Ström API

Java arraycopy() metod

Java arraycopy() är metoden för Systemet klass som tillhör java.lang paket. Den kopierar en array från den angivna källarrayen till den angivna positionen för destinationsarrayen. Antalet kopierade element är lika med längdargumentet.

Syntax:

python generera uuid
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parametrar

    källa: Det är en källmatris.source_position: Startpunkt i källmatrisen.destination: Det är en destinationsarray.destination_position: Startposition i målarrayen.längd: Antalet arrayelement som ska kopieras

Det kastar NullPointerException om käll- eller målarrayen är null. Det kastar också ArrayIndexOutOfBoundsException if :

    source_positioneller destination_position eller längden är negativ.source_position+lengthär större än längden på källmatrisen, eller destination_position+längd är större än längden på destinationsmatrisen.

Exempel på arraycopy()-metod

mark zuckerberg utbildning

I följande exempel har vi skapat två heltalsmatriser firstArray och secondArray . För att slå samman två arrayer hittar vi dess längd och lagras i fal respektive sal variabel. Efter det skapar vi en ny heltalsmatris resultat som lagrar summan av längden för båda arrayerna. Kopiera nu varje element i båda arrayerna till resultatarrayen med hjälp av arraycopy() fungera.

 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 } } 

Produktion:

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

Låt oss se ett annat exempel där vi har specificerat soure_array, destination, dest_position, source position och length. Vi kan slå samman array enligt de angivna positionerna och längden.

Exempel

 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;>

Utan att använda arraycopy()-metoden

Exempel på att slå samman två arrayer

I följande exempel har vi initierat två arrayer firstArray och secondArray av heltalstyp. Kopiera varje element i båda arrayerna manuellt till mergedArray och konvertera arrayen till String genom att använda metoden toString() i klassen Array.

 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 } } 

Produktion:

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

Använda samlingar

Exempel på att slå samman två arrayer i Java

I följande exempel har vi initierat två arrayer str1 och str2 av String-typ. Efter det har vi skapat en listvy av str1 genom att använda metoden Arrays.asList(). Nu har vi skapat listvyn för str2 och lagt till alla element i str2 i listan. Utför återigen konvertering från lista till array och lagra den resulterande arrayen i str3-variabeln.

 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 } } 

Produktion:

 [A, E, I, O, U] 

Java Stream API

Stream.of()-metoden

De Stream.of() metod för Stream-gränssnitt returnerar en sekventiellt ordnad ström vars element är värdena.

Syntax

 static Stream of(T....values) 

Där M T är typen av strömelement. Metoden accepterar värden (element av den nya strömmen).

flatMap() metod

De flatMap() metod är metoden för Stream-gränssnitt. Den returnerar en ström som består av resultatet.

ordbok c#

Syntax

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

Var R är elementtypen för ny ström. Metoden accepterar a kartläggare (en funktion att tillämpa på varje element som producerar en ström av nya värden) som en parameter.

hur man sorterar en arraylist i java

toArray()-metoden

De toArray() metod för Stream-gränssnitt returnerar en array som innehåller elementen i strömmen.

Syntax

 Object[] toArray() 

Exempel på att slå samman två arrayer med 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)); } } 

Produktion:

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