Das Zusammenführen zweier Arrays in Java ähnelt dem Verketten oder Kombinieren zweier Arrays in einem einzigen Array-Objekt. Wir müssen zwei Arrays zusammenführen, sodass die Array-Elemente ihre ursprüngliche Reihenfolge im neu zusammengeführten Array beibehalten. Die Elemente des ersten Arrays stehen im neu zusammengeführten Array vor den Elementen des zweiten Arrays. Zum Beispiel:
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
Es gibt folgende Möglichkeiten, zwei Arrays zusammenzuführen:
- Java arraycopy() Methode
- Ohne zu benutzen arraycopy() Methode
- Java Sammlungen
- Java Strom API
Java-Methode arraycopy()
Java arraycopy() ist die Methode von System Klasse, zu der es gehört java.lang Paket. Es kopiert ein Array vom angegebenen Quellarray an die angegebene Position des Zielarrays. Die Anzahl der kopierten Elemente entspricht dem Längenargument.
Syntax:
Größe von Python
public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length)
Parameter
Es wirft NullPointerException wenn das Quell- oder Zielarray null ist. Es wirft auch ArrayIndexOutOfBoundsException if :
Beispiel für die Methode arraycopy()
Im folgenden Beispiel haben wir zwei Integer-Arrays erstellt erstesArray Und zweitesArray . Um zwei Arrays zusammenzuführen, ermitteln wir ihre Länge und speichern sie in den Variablen fal und sal. Danach erstellen wir ein neues Integer-Array Ergebnis Hier wird die Summe der Längen beider Arrays gespeichert. Kopieren Sie nun alle Elemente beider Arrays mithilfe von in das Ergebnisarray arraycopy() Funktion.
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 } }
Ausgabe:
Erstellen von Tabellen in Latex
[23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3]
Sehen wir uns ein weiteres Beispiel an, in dem wir „soure_array“, „destination“, „dest_position“, „source position“ und „length“ angegeben haben. Wir können Arrays entsprechend der angegebenen Positionen und Länge zusammenführen.
Beispiel
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;>
Ohne die Methode arraycopy() zu verwenden
Beispiel für die Zusammenführung zweier Arrays
Im folgenden Beispiel haben wir zwei Arrays „firstArray“ und „secondArray“ vom Typ „Ganzzahl“ initialisiert. Kopieren Sie jedes Element beider Arrays manuell nach mergedArray und konvertieren Sie dieses Array mithilfe der toString()-Methode der Array-Klasse in String.
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 } }
Ausgabe:
[56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15]
Sammlungen verwenden
Beispiel für das Zusammenführen zweier Arrays in Java
sts herunterladen
Im folgenden Beispiel haben wir zwei Arrays str1 und str2 vom Typ String initialisiert. Danach haben wir mithilfe der Methode Arrays.asList() eine Listenansicht von str1 erstellt. Jetzt haben wir die Listenansicht von str2 erstellt und alle Elemente von str2 zur Liste hinzugefügt. Führen Sie erneut eine Konvertierung von der Liste in ein Array durch und speichern Sie das resultierende Array in der Variablen 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 } }
Ausgabe:
[A, E, I, O, U]
Java-Stream-API
Stream.of()-Methode
Der Stream.of() Die Methode der Stream-Schnittstelle gibt einen sequentiell geordneten Stream zurück, dessen Elemente die Werte sind.
Java sortiert eine Liste
Syntax
static Stream of(T....values)
Wo M T ist der Typ der Stream-Elemente. Die Methode akzeptiert Werte (Elemente des neuen Streams).
flatMap()-Methode
Der flatMap() Methode ist die Methode der Stream-Schnittstelle. Es gibt einen Stream zurück, der aus dem Ergebnis besteht.
Syntax
Stream flatMap(Function<? Super T, ? extends Stream> mapper)
Wo R ist der Elementtyp des neuen Streams. Die Methode akzeptiert a Mapper (eine Funktion, die auf jedes Element angewendet wird und einen Strom neuer Werte erzeugt) als Parameter.
toArray()-Methode
Der toArray() Die Methode der Stream-Schnittstelle gibt ein Array zurück, das die Elemente des Streams enthält.
das schönste Lächeln
Syntax
Object[] toArray()
Beispiel für das Zusammenführen zweier Arrays mithilfe der 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)); } }
Ausgabe:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]