logo

Cómo fusionar dos matrices en Java

Fusionar dos matrices en Java es similar a concatenar o combinar dos matrices en un solo objeto de matriz. Tenemos que fusionar dos matrices de modo que los elementos de la matriz mantengan su orden original en la matriz recién fusionada. Los elementos de la primera matriz preceden a los elementos de la segunda matriz en la matriz recién fusionada. Por ejemplo:

 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 

Existen las siguientes formas de fusionar dos matrices:

  • Java copia de matriz() método
  • Sin uso copia de matriz() método
  • Java Colecciones
  • Java Arroyo API

Método Java de copia de matriz ()

Java copia de matriz() es el método de Sistema clase a la que pertenece java.lang paquete. Copia una matriz de la matriz de origen especificada a la posición especificada de la matriz de destino. El número de elementos copiados es igual a la longitud del argumento.

Sintaxis:

aleatorio en c
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parámetros

    fuente: Es una matriz fuente.posición_fuente: Punto de partida en la matriz de origen.destino: Es una matriz de destino.posición_destino: Posición inicial en la matriz de destino.longitud: El número de elementos de la matriz que se copiarán.

arroja Excepción de puntero nulo si la matriz de origen o destino es nula. tambien tira ArrayIndexOutOfBoundsException si :

    posición_fuenteo posición_destino o la longitud es negativa.posición_fuente+longitudes mayor que la longitud de la matriz de origen, o posición_destino+longitud es mayor que la longitud de la matriz de destino.

Ejemplo de método arraycopy()

En el siguiente ejemplo, hemos creado dos matrices de números enteros. primera matriz y segunda matriz . Para fusionar dos matrices, encontramos su longitud y la almacenamos en las variables fal y sal respectivamente. Después de eso, creamos una nueva matriz de enteros. resultado que almacena la suma de la longitud de ambas matrices. Ahora, copie cada elemento de ambas matrices a la matriz de resultados usando copia de matriz() función.

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

Producción:

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

Veamos otro ejemplo en el que hemos especificado soure_array, destino, posición_destino, posición de origen y longitud. Podemos fusionar la matriz según las posiciones y la longitud especificadas.

Ejemplo

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

Sin utilizar el método arraycopy()

Ejemplo de fusión de dos matrices

conjunto de hash vs mapa de hash

En el siguiente ejemplo, hemos inicializado dos matrices firstArray y secondArray de tipo entero. Copie manualmente cada elemento de ambas matrices en fusionadoArray y convierta esa matriz en String usando el método toString() de la clase Array.

lobo o zorro
 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 } } 

Producción:

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

Usando colecciones

Ejemplo de fusión de dos matrices en Java

En el siguiente ejemplo, hemos inicializado dos matrices str1 y str2 de tipo String. Después de eso, hemos creado una vista de lista de str1 usando el método Arrays.asList(). Ahora hemos creado la vista de lista de str2 y agregamos todos los elementos de str2 a la lista. Nuevamente realice la conversión de lista a matriz y almacene la matriz resultante en 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 } } 

Producción:

 [A, E, I, O, U] 

API de flujo de Java

Método Stream.of()

El Corriente de() El método de la interfaz Stream devuelve una secuencia ordenada secuencial cuyos elementos son los valores.

Sintaxis

 static Stream of(T....values) 

donde m t es el tipo de elementos de la corriente. El método acepta valores (elementos de la nueva corriente).

rebanar java

método mapa plano ()

El mapa plano() El método es el método de la interfaz Stream. Devuelve una secuencia que consta del resultado.

Sintaxis

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

Dónde R es el tipo de elemento de la nueva secuencia. El método acepta una mapeador (una función para aplicar a cada elemento que produce un flujo de nuevos valores) como parámetro.

método toArray()

El a matriz() El método de la interfaz Stream devuelve una matriz que contiene los elementos de la secuencia.

Sintaxis

 Object[] toArray() 

Ejemplo de fusión de dos matrices usando Stream API

cómo encontrar aplicaciones ocultas en Android
 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)); } } 

Producción:

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