Å slå sammen to matriser i Java ligner på å sammenkoble eller kombinere to matriser i et enkelt matriseobjekt. Vi må slå sammen to matriser slik at matriseelementene opprettholder sin opprinnelige rekkefølge i den nylig sammenslåtte matrisen. Elementene i den første matrisen går foran elementene i den andre matrisen i den nylig sammenslåtte matrisen. For eksempel:
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
Det er følgende måter å slå sammen to matriser:
- Java arraycopy() metode
- Uten å bruke arraycopy() metode
- Java Samlinger
- Java Strøm API
Java arraycopy() metode
Java arraycopy() er metoden for System klasse som tilhører java.lang pakke. Den kopierer en matrise fra den angitte kildematrisen til den spesifiserte posisjonen til målmatrisen. Antall kopierte elementer er lik lengdeargumentet.
Syntaks:
filtrerende python
public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length)
Parametere
Det kaster NullPointerException hvis kilde- eller målmatrisen er null. Det kaster også ArrayIndexOutOfBoundsException if :
Eksempel på arraycopy()-metoden
java programmeringsmatriser
I det følgende eksempelet har vi laget to heltallsmatriser firstArray og secondArray . For å slå sammen to matriser finner vi lengden og lagret i henholdsvis fal og sal-variabel. Etter det lager vi en ny heltallsmatrise resultat som lagrer summen av lengden til begge matrisene. Kopier nå hvert element i begge matrisene til resultatmatrisen ved å bruke arraycopy() funksjon.
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 } }
Produksjon:
[23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3]
La oss se et annet eksempel der vi har spesifisert soure_array, destination, dest_position, kildeposisjon og lengde. Vi kan slå sammen array i henhold til de angitte posisjonene og lengden.
Eksempel
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;>
Uten å bruke arraycopy()-metoden
Eksempel på sammenslåing av to arrays
I det følgende eksemplet har vi initialisert to arrays firstArray og secondArray av heltallstype. Kopier hvert element av begge arrays manuelt til mergedArray og konverter den arrayen til String ved å bruke toString()-metoden i Array-klassen.
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 } }
Produksjon:
ugyldig 0
[56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15]
Bruke samlinger
Eksempel på sammenslåing av to arrays i Java
I det følgende eksempelet har vi initialisert to arrays str1 og str2 av String-typen. Etter det har vi laget en listevisning av str1 ved å bruke Arrays.asList()-metoden. Nå har vi laget listevisningen til str2 og lagt til alle elementene i str2 i listen. Utfør igjen konvertering fra liste til matrise og lagre den resulterende matrisen i str3-variabelen.
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 } }
Produksjon:
[A, E, I, O, U]
Java Stream API
Stream.of()-metoden
De Stream.of() metode for Stream-grensesnitt returnerer en sekvensielt ordnet strøm hvis elementer er verdiene.
Syntaks
static Stream of(T....values)
Hvor M T er typen strømelementer. Metoden godtar verdier (elementer i den nye strømmen).
flatMap()-metoden
De flatMap() metoden er metoden for Stream-grensesnitt. Den returnerer en strøm som består av resultatet.
hva er klynging
Syntaks
Stream flatMap(Function<? Super T, ? extends Stream> mapper)
Hvor R er elementtypen til ny strøm. Metoden aksepterer en kartlegger (en funksjon som skal brukes på hvert element som produserer en strøm av nye verdier) som en parameter.
eksempel på java-understreng
toArray()-metoden
De toArray() metode for Stream-grensesnitt returnerer en matrise som inneholder elementene i strømmen.
Syntaks
Object[] toArray()
Eksempel på sammenslåing av to arrays ved hjelp av 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)); } }
Produksjon:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]