logo

Kaip sujungti du masyvus Java

Dviejų masyvų sujungimas „Java“ yra panašus į dviejų masyvų sujungimą arba sujungimą viename masyvo objekte. Turime sujungti du masyvus taip, kad masyvo elementai išlaikytų savo pradinę tvarką naujai sujungtame masyve. Pirmojo masyvo elementai yra prieš antrojo masyvo elementus naujai sujungtame masyve. Pavyzdžiui:

 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 

Yra šie būdai, kaip sujungti du masyvus:

  • Java masyvo kopija () metodas
  • Nenaudojant masyvo kopija () metodas
  • Java Kolekcijos
  • Java Srautas API

Java arraycopy() metodas

Java masyvo kopija () yra metodas Sistema klasei, kuriai priklauso java.lang paketą. Jis nukopijuoja masyvą iš nurodyto šaltinio masyvo į nurodytą paskirties masyvo vietą. Nukopijuotų elementų skaičius yra lygus ilgio argumentui.

Sintaksė:

avinas aktorius
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parametrai

    šaltinis: Tai šaltinio masyvas.šaltinio_pozicija: pradžios taškas šaltinio masyve.Kelionės tikslas: Tai paskirties masyvas.paskirties_pozicija: pradinė padėtis paskirties masyve.ilgio: masyvo elementų, kuriuos reikia nukopijuoti, skaičius

Tai meta NullPointerException jei šaltinio arba paskirties masyvas yra nulinis. Taip pat meta ArrayIndexOutOfBoundsException if :

    šaltinio_pozicijaarba paskirties_pozicija arba ilgis yra neigiamas.šaltinio_pozicija+ilgisyra didesnis už šaltinio masyvo ilgį arba paskirties_pozicija+ilgis yra didesnis nei paskirties masyvo ilgis.

Arycopy() metodo pavyzdys

Šiame pavyzdyje sukūrėme du sveikųjų skaičių masyvus pirmasis Array ir secondArray . Norėdami sujungti du masyvus, randame jo ilgį ir saugomi atitinkamai fal ir sal kintamuosiuose. Po to sukuriame naują sveikųjų skaičių masyvą rezultatas kurioje saugoma abiejų masyvų ilgių suma. Dabar nukopijuokite kiekvieną abiejų masyvų elementą į rezultatų masyvą naudodami masyvo kopija () funkcija.

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

Išvestis:

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

Pažiūrėkime kitą pavyzdį, kuriame nurodėme soure_array, paskirties vietą, dest_poziciją, šaltinio padėtį ir ilgį. Masyvą galime sujungti pagal nurodytas pozicijas ir ilgį.

Pavyzdys

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

Nenaudojant arraycopy() metodo

Dviejų masyvų sujungimo pavyzdys

Šiame pavyzdyje inicijavome du sveikųjų skaičių tipo masyvus firstArray ir secondArray. Rankiniu būdu nukopijuokite kiekvieną abiejų masyvų elementą į mergedArray ir konvertuokite tą masyvą į eilutę naudodami Array klasės metodą toString().

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

Išvestis:

sėklos vs sporos
 [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] 

Kolekcijos naudojimas

Dviejų masyvų sujungimo Java programoje pavyzdys

Šiame pavyzdyje inicijavome du string tipo masyvus str1 ir str2. Po to mes sukūrėme str1 sąrašo rodinį naudodami Arrays.asList() metodą. Dabar sukūrėme str2 sąrašo rodinį ir į sąrašą įtraukėme visus str2 elementus. Dar kartą konvertuokite iš sąrašo į masyvą ir išsaugokite gautą masyvą į str3 kintamąjį.

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

Išvestis:

 [A, E, I, O, U] 

„Java Stream“ API

Stream.of() metodas

The Stream.of() Srauto sąsajos metodas grąžina nuoseklų sutvarkytą srautą, kurio elementai yra reikšmės.

Sintaksė

 static Stream of(T....values) 

Kur M T yra srauto elementų tipas. Metodas priimamas vertybes (naujojo srauto elementai).

flatMap() metodas

The plokščias žemėlapis () metodas yra srauto sąsajos metodas. Jis grąžina srautą, kurį sudaro rezultatas.

kas daro kompiuterį greitą

Sintaksė

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

Kur R yra naujo srauto elemento tipas. Metodas priima a kartografas (funkcija, taikoma kiekvienam elementui, kuris sukuria naujų reikšmių srautą) kaip parametras.

java atvirkštinė eilutė

toArray() metodas

The toArray () Srauto sąsajos metodas grąžina masyvą, kuriame yra srauto elementai.

Sintaksė

 Object[] toArray() 

Dviejų masyvų sujungimo naudojant Stream API pavyzdys

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

Išvestis:

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