Sammenlægning af to arrays i Java svarer til at sammenkæde eller kombinere to arrays i et enkelt array-objekt. Vi skal flette to arrays, således at array-elementerne bevarer deres oprindelige rækkefølge i det nyligt fusionerede array. Elementerne i det første array går forud for elementerne i det andet array i det nyligt flettede array. 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
Der er følgende måder at flette to arrays på:
- Java arraycopy() metode
- Uden at bruge arraycopy() metode
- Java Samlinger
- Java Strøm API
Java arraycopy() metode
Java arraycopy() er metoden til System klasse som hører til java.lang pakke. Den kopierer et array fra det angivne kildearray til den angivne position for destinationsarrayet. Antallet af kopierede elementer er lig med længdeargumentet.
Syntaks:
maskinlæringsmodeller
public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length)
Parametre
Det kaster NullPointerException hvis kilde- eller destinationsarrayet er null. Den kaster også ArrayIndexOutOfBoundsException if :
Eksempel på arraycopy() metode
java trim streng
I det følgende eksempel har vi oprettet to heltalsarrays firstArray og secondArray . For at fusionere to arrays finder vi dens længde og lagres i henholdsvis fal og sal variable. Derefter opretter vi et nyt heltalsarray resultat som gemmer summen af længden af begge arrays. Kopier nu hvert element i begge arrays til resultatarrayet ved at bruge arraycopy() fungere.
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 } }
Produktion:
[23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3]
Lad os se et andet eksempel, hvor vi har specificeret soure_array, destination, dest_position, kildeposition og længde. Vi kan flette array i henhold til de angivne positioner og længde.
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;>
Uden at bruge arraycopy() metoden
Eksempel på sammenlægning af to arrays
I det følgende eksempel har vi initialiseret to arrays firstArray og secondArray af heltalstypen. Kopier manuelt hvert element i begge arrays til mergedArray og konverter det array til String ved at bruge 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 } }
Produktion:
ugyldig 0
[56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15]
Brug af samlinger
Eksempel på sammenlægning af to arrays i Java
I det følgende eksempel har vi initialiseret to arrays str1 og str2 af String-typen. Derefter har vi lavet en listevisning af str1 ved at bruge Arrays.asList() metoden. Nu har vi oprettet listevisningen af str2 og tilføjet alle elementerne i str2 til listen. Udfør igen konvertering fra liste til array og gem det resulterende array i str3 variabel.
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 } }
Produktion:
[A, E, I, O, U]
Java Stream API
Stream.of() metode
Det Stream.of() metode for Stream-grænseflade returnerer en sekventielt ordnet strøm, hvis elementer er værdierne.
Syntaks
static Stream of(T....values)
Hvor M T er typen af strømelementer. Metoden accepterer værdier (elementer af den nye strøm).
flatMap() metode
Det flatMap() metode er metoden til Stream-grænseflade. Det returnerer en strøm, der består af resultatet.
hvad er klyngedannelse
Syntaks
Stream flatMap(Function<? Super T, ? extends Stream> mapper)
Hvor R er elementtypen for ny strøm. Metoden accepterer en kortlægger (en funktion, der skal anvendes på hvert element, som producerer en strøm af nye værdier) som en parameter.
eksempel på java-understreng
toArray() metode
Det toArray() metode for Stream-interface returnerer et array, der indeholder elementerne i streamen.
Syntaks
Object[] toArray()
Eksempel på sammenlægning af to arrays ved hjælp af 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)); } }
Produktion:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]