logo

Com fusionar dues matrius a Java

La fusió de dues matrius a Java és similar a concatenar o combinar dues matrius en un sol objecte de matriu. Hem de combinar dues matrius de manera que els elements de la matriu mantinguin el seu ordre original a la matriu recent fusionada. Els elements de la primera matriu precedeixen els elements de la segona matriu de la nova matriu combinada. Per exemple:

 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 

Hi ha maneres següents de combinar dues matrius:

  • Java arraycopy() mètode
  • Sense utilitzar arraycopy() mètode
  • Java Col·leccions
  • Java corrent API

Mètode Java arraycopy().

Java arraycopy() és el mètode de Sistema classe a la qual pertany java.lang paquet. Copia una matriu de la matriu d'origen especificada a la posició especificada de la matriu de destinació. El nombre d'elements copiats és igual a l'argument de longitud.

Sintaxi:

windows.open javascript
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Paràmetres

    font: És una matriu font.posició_font: Punt de partida a la matriu font.destinació: és una matriu de destinació.posició_destinació: Posició inicial a la matriu de destinació.llargada: El nombre d'elements de matriu que s'han de copiar

Es tira NullPointerException si la matriu d'origen o de destinació és nul·la. També llença ArrayIndexOutOfBoundsException si :

    posició_fonto posició_destinació o la longitud és negativa.posició_origen+longitudés més gran que la longitud de la matriu font, o posició_destinació+longitud és més gran que la longitud de la matriu de destinació.

Exemple del mètode arraycopy().

En l'exemple següent, hem creat dues matrius sencers firstArray i secondArray . Per tal de combinar dues matrius, trobem la seva longitud i s'emmagatzema a les variables fal i sal respectivament. Després d'això, creem una nova matriu d'enters resultat que emmagatzema la suma de la longitud d'ambdues matrius. Ara, copieu cada element d'ambdues matrius a la matriu de resultats utilitzant arraycopy() funció.

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

Sortida:

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

Vegem un altre exemple en què hem especificat soure_array, destination, dest_position, source position i length. Podem combinar la matriu segons les posicions i la longitud especificades.

Exemple

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

Sense utilitzar el mètode arraycopy().

Exemple de fusió de dues matrius

A l'exemple següent, hem inicialitzat dues matrius firstArray i secondArray de tipus enter. Copieu manualment cada element d'ambdues matrius a mergedArray i convertiu aquesta matriu en String mitjançant el mètode toString() de la classe 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 } } 

Sortida:

comanda d'execució de linux
 [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] 

Ús de les col·leccions

Exemple de fusió de dues matrius a Java

A l'exemple següent, hem inicialitzat dues matrius str1 i str2 de tipus String. Després d'això, hem creat una vista de llista de str1 mitjançant el mètode Arrays.asList(). Ara hem creat la vista de llista de str2 i hem afegit tots els elements de str2 a la llista. De nou, realitzeu la conversió de llista a matriu i emmagatzemeu la matriu resultant a la variable str3.

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

Sortida:

 [A, E, I, O, U] 

API Java Stream

Mètode Stream.of().

El Stream.of() El mètode de la interfície Stream retorna un flux ordenat seqüencial els elements del qual són els valors.

Sintaxi

 static Stream of(T....values) 

On M T és el tipus d'elements del corrent. El mètode accepta valors (elements del nou flux).

mètode flatMap().

El flatMap() El mètode és el mètode de la interfície Stream. Retorna un flux que consta del resultat.

java obrint un fitxer

Sintaxi

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

On R és el tipus d'element del nou flux. El mètode accepta a cartografiador (una funció per aplicar a cada element que produeix un flux de nous valors) com a paràmetre.

java genera un nombre aleatori

mètode toArray().

El toArray() El mètode de la interfície Stream retorna una matriu que conté els elements del stream.

Sintaxi

 Object[] toArray() 

Exemple de combinació de dues matrius mitjançant l'API Stream

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

Sortida:

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