logo

Como mesclar dois arrays em Java

Mesclar dois arrays em Java é semelhante a concatenar ou combinar dois arrays em um único objeto array. Temos que mesclar dois arrays de forma que os elementos do array mantenham sua ordem original no array recém-mesclado. Os elementos da primeira matriz precedem os elementos da segunda matriz na matriz recém-mesclada. Por exemplo:

 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 

Existem as seguintes maneiras de mesclar duas matrizes:

  • Java arraycopy() método
  • Sem utilizar arraycopy() método
  • Java Coleções
  • Java Fluxo API

Método Java arraycopy()

Java arraycopy() é o método de Sistema classe que pertence java.lang pacote. Ele copia um array do array de origem especificado para a posição especificada do array de destino. O número de elementos copiados é igual ao argumento de comprimento.

Sintaxe:

duração java
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parâmetros

    fonte: é uma matriz de origem.posição_fonte: Ponto inicial na matriz de origem.destino: é uma matriz de destino.posição_destino: posição inicial na matriz de destino.comprimento: O número de elementos da matriz a serem copiados

Isso joga Null Pointer Exception se a matriz de origem ou destino for nula. Também joga ArrayIndexOutOfBoundsException se :

    posição_fonteou posição_destino ou o comprimento é negativo.posição_fonte+comprimentoé maior que o comprimento da matriz de origem, ou posição_destino+comprimento é maior que o comprimento da matriz de destino.

Exemplo de método arraycopy()

No exemplo a seguir, criamos duas matrizes inteiras primeiroArray e segundoArray . Para mesclar dois arrays, encontramos seu comprimento e armazenamos nas variáveis ​​fal e sal respectivamente. Depois disso, criamos um novo array inteiro resultado que armazena a soma do comprimento de ambas as matrizes. Agora, copie cada elemento de ambas as matrizes para a matriz resultante usando arraycopy() função.

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

Saída:

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

Vejamos outro exemplo em que especificamos soure_array, destino, posição_dest, posição de origem e comprimento. Podemos mesclar o array de acordo com as posições e comprimento especificados.

Exemplo

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

Sem usar o método arraycopy()

Exemplo de fusão de dois arrays

senão se java

No exemplo a seguir, inicializamos dois arrays firstArray e secondArray do tipo inteiro. Copie manualmente cada elemento de ambos os arrays para mergedArray e converta esse array em String usando o método toString() da classe Array.

vlc media player baixar youtube
 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 } } 

Saída:

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

Usando coleções

Exemplo de fusão de dois arrays em Java

No exemplo a seguir, inicializamos dois arrays str1 e str2 do tipo String. Depois disso, criamos uma visualização de lista de str1 usando o método Arrays.asList(). Agora criamos a visualização de lista de str2 e adicionamos todos os elementos de str2 à lista. Execute novamente a conversão de lista em array e armazene o array resultante na variável 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 } } 

Saída:

 [A, E, I, O, U] 

API de fluxo Java

Método Stream.of()

O Fluxo de() O método da interface Stream retorna um fluxo ordenado sequencial cujos elementos são os valores.

Sintaxe

 static Stream of(T....values) 

Onde M T é o tipo de elementos de fluxo. O método aceita valores (elementos do novo fluxo).

alterar adicionar coluna oracle

Método flatMap()

O mapa plano() método é o método da interface Stream. Ele retorna um fluxo que consiste no resultado.

Sintaxe

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

Onde R é o tipo de elemento do novo fluxo. O método aceita um mapeador (uma função a ser aplicada a cada elemento que produz um fluxo de novos valores) como parâmetro.

Método toArray()

O toArray() O método da interface Stream retorna um array contendo os elementos do stream.

Sintaxe

 Object[] toArray() 

Exemplo de fusão de dois arrays usando Stream API

interface em java
 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)); } } 

Saída:

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