logo

Comment fusionner deux tableaux en Java

La fusion de deux tableaux en Java est similaire à la concaténation ou à la combinaison de deux tableaux en un seul objet tableau. Nous devons fusionner deux tableaux de telle sorte que les éléments du tableau conservent leur ordre d'origine dans le tableau nouvellement fusionné. Les éléments du premier tableau précèdent les éléments du deuxième tableau dans le tableau nouvellement fusionné. Par 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 

Il existe les manières suivantes pour fusionner deux tableaux :

  • Java tableaucopie() méthode
  • Sans utiliser tableaucopie() méthode
  • Java Collections
  • Java Flux API

Méthode Java arraycopy()

Java tableaucopie() est la méthode de Système classe à laquelle appartient java.lang emballer. Il copie un tableau du tableau source spécifié vers la position spécifiée du tableau de destination. Le nombre d'éléments copiés est égal à l'argument de longueur.

Syntaxe:

modèle de conception d'usine
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Paramètres

    source: C'est un tableau source.position_source: Point de départ dans le tableau source.destination: C'est un tableau de destination.position_destination: Position de départ dans le tableau de destination.longueur: Le nombre d'éléments du tableau à copier

Ça jette NullPointerException si le tableau source ou destination est nul. Il jette aussi ArrayIndexOutOfBoundsException si :

    position_sourceou destination_position ou la longueur est négative.source_position+longueurest supérieur à la longueur du tableau source, ou destination_position+longueur est supérieure à la longueur du tableau de destination.

Exemple de méthode arraycopy()

Dans l'exemple suivant, nous avons créé deux tableaux d'entiers premierTableau et deuxièmeTableau . Afin de fusionner deux tableaux, nous trouvons sa longueur et la stockons respectivement dans les variables fal et sal. Après cela, nous créons un nouveau tableau d'entiers résultat qui stocke la somme des longueurs des deux tableaux. Maintenant, copiez chaque élément des deux tableaux dans le tableau de résultats en utilisant tableaucopie() fonction.

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

Sortir:

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

Voyons un autre exemple dans lequel nous avons spécifié soure_array, destination, dest_position, source position et length. Nous pouvons fusionner le tableau en fonction des positions et de la longueur spécifiées.

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

Sans utiliser la méthode arraycopy()

Exemple de fusion de deux tableaux

Dans l'exemple suivant, nous avons initialisé deux tableaux firstArray et secondArray de type entier. Copiez manuellement chaque élément des deux tableaux dans mergedArray et convertissez ce tableau en String en utilisant la méthode 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 } } 

Sortir:

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

Utiliser les collections

Exemple de fusion de deux tableaux en Java

Dans l'exemple suivant, nous avons initialisé deux tableaux str1 et str2 de type String. Après cela, nous avons créé une vue liste de str1 en utilisant la méthode Arrays.asList(). Nous avons maintenant créé la vue liste de str2 et ajouté tous les éléments de str2 dans la liste. Effectuez à nouveau la conversion de la liste en tableau et stockez le tableau résultant dans la variable str3.

machine virtuelle Java
 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 } } 

Sortir:

 [A, E, I, O, U] 

API de flux Java

Méthode Stream.of()

Le Flux de() La méthode de l'interface Stream renvoie un flux ordonné séquentiel dont les éléments sont les valeurs.

Syntaxe

 static Stream of(T....values) 

Où M T est le type d'éléments de flux. La méthode accepte valeurs (éléments du nouveau flux).

pourquoi la chaîne est immuable en Java

Méthode flatMap()

Le flatMap() méthode est la méthode de l’interface Stream. Il renvoie un flux composé du résultat.

Syntaxe

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

R. est le type d'élément du nouveau flux. La méthode accepte un mappeur (une fonction à appliquer à chaque élément qui produit un flux de nouvelles valeurs) en tant que paramètre.

Méthode toArray()

Le versArray() La méthode de l'interface Stream renvoie un tableau contenant les éléments du flux.

Syntaxe

 Object[] toArray() 

Exemple de fusion de deux tableaux à l'aide de l'API Stream

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

Sortir:

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