logo

Cum să îmbinați două matrice în Java

Îmbinarea a două matrice în Java este similară cu concatenarea sau combinarea a două matrice într-un singur obiect matrice. Trebuie să îmbinam două matrice astfel încât elementele matricei să-și mențină ordinea inițială în tabloul nou îmbinat. Elementele primei matrice preced elementele celei de-a doua matrice din tabloul nou îmbinat. De exemplu:

 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 

Există următoarele moduri de a îmbina două matrice:

  • Java arraycopy() metodă
  • Fara a folosi arraycopy() metodă
  • Java Colecții
  • Java Curent API

Metoda Java arraycopy().

Java arraycopy() este metoda de Sistem clasa careia ii apartine java.lang pachet. Copiază o matrice din matricea sursă specificată în poziția specificată a matricei de destinație. Numărul de elemente copiate este egal cu argumentul de lungime.

Sintaxă:

print array în java
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parametrii

    sursă: Este o matrice sursă.poziția_sursă: Punctul de pornire în matricea sursă.destinaţie: este o matrice de destinație.pozitie_destinatie: Poziția de pornire în matricea de destinație.lungime: Numărul de elemente ale matricei care trebuie copiate

Aruncă NullPointerException dacă matricea sursă sau destinație este nulă. De asemenea, aruncă ArrayIndexOutOfBoundsException dacă :

    poziția_sursăsau pozitie_destinatie sau lungimea este negativă.poziția_sursă+lungimeeste mai mare decât lungimea matricei sursă sau pozitie_destinatie+lungime este mai mare decât lungimea matricei de destinație.

Exemplu de metoda arraycopy().

În exemplul următor, am creat două matrice întregi firstArray și secondArray . Pentru a fuziona două matrice, găsim lungimea acesteia și stocată în variabila fal și respectiv sal. După aceea, creăm o nouă matrice de întregi rezultat care stochează suma lungimii ambelor matrice. Acum, copiați fiecare element din ambele matrice în tabloul rezultat utilizând arraycopy() funcţie.

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

Ieșire:

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

Să vedem un alt exemplu în care am specificat soure_array, destinația, dest_position, poziția sursă și lungimea. Putem îmbina matrice în funcție de pozițiile și lungimea specificate.

Exemplu

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

Fără a utiliza metoda arraycopy().

Exemplu de îmbinare a două matrice

alfabet și numere

În exemplul următor, am inițializat două tablouri firstArray și secondArray de tip întreg. Copiați manual fiecare element al ambelor matrice în mergedArray și convertiți acea matrice în String utilizând metoda toString() din clasa 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 } } 

Ieșire:

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

Utilizarea colecțiilor

Exemplu de îmbinare a două matrice în Java

care este 10 din 100

În exemplul următor, am inițializat două tablouri str1 și str2 de tip String. După aceea, am creat o vizualizare listă a str1 utilizând metoda Arrays.asList(). Acum am creat vizualizarea listă a str2 și am adăugat toate elementele str2 în listă. Efectuați din nou conversia din listă în matrice și stocați matricea rezultată în variabila 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 } } 

Ieșire:

 [A, E, I, O, U] 

API-ul Java Stream

Metoda Stream.of().

The Stream.of() metoda interfeței Stream returnează un flux ordonat secvenţial ale cărui elemente sunt valorile.

Comandă rapidă cu majuscule excel

Sintaxă

 static Stream of(T....values) 

Unde M T este tipul elementelor fluxului. Metoda acceptă valorile (elementele noului flux).

metoda flatMap().

The flatMap() metoda este metoda interfeței Stream. Returnează un flux constând din rezultat.

Sintaxă

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

Unde R este tipul de element al fluxului nou. Metoda acceptă a cartograf (o funcție de aplicat fiecărui element care produce un flux de valori noi) ca parametru.

metoda toArray().

The toArray() metoda interfeței Stream returnează o matrice care conține elementele fluxului.

SUA cate orase

Sintaxă

 Object[] toArray() 

Exemplu de îmbinare a două matrice folosind 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)); } } 

Ieșire:

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