Î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
Aruncă NullPointerException dacă matricea sursă sau destinație este nulă. De asemenea, aruncă ArrayIndexOutOfBoundsException dacă :
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('source_array : '); 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[] = { 'A', 'E', 'I' }; //source array String str2[] = { 'O', 'U' }; //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('Merged array: '+ 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[] = { 'A', 'E', 'I' }; //source array String str2[] = { 'O', 'U' }; //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('Merged array: '+ Arrays.toString(mergedArray)); } }
Ieșire:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]