logo

Hogyan lehet két tömböt egyesíteni Java-ban

Két tömb egyesítése Java nyelven hasonló a két tömb összefűzéséhez vagy egyesítéséhez egyetlen tömbobjektumban. Két tömböt kell egyesítenünk úgy, hogy a tömbelemek megtartsák eredeti sorrendjüket az újonnan egyesített tömbben. Az első tömb elemei megelőzik a második tömb elemeit az újonnan egyesített tömbben. Például:

 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 

Két tömb egyesítésére a következő módok állnak rendelkezésre:

  • Jáva arraycopy() módszer
  • Használat nélkül arraycopy() módszer
  • Jáva Gyűjtemények
  • Jáva Folyam API

Java arraycopy() metódus

Jáva arraycopy() módszere Rendszer osztályba tartozik java.lang csomag. Egy tömböt másol a megadott forrástömbből a céltömb megadott pozíciójába. A másolt elemek száma megegyezik a hossz argumentumával.

Szintaxis:

mergesort java
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Paraméterek

    forrás: Ez egy forrástömb.forrás_pozíció: Kiindulópont a forrástömbben.rendeltetési hely: Ez egy céltömb.rendeltetési_pozíció: Kezdőpozíció a céltömbben.hossz: A másolandó tömbelemek száma

Ez dob NullPointerException ha a forrás- vagy céltömb nulla. Az is dob ArrayIndexOutOfBoundsException if :

    forrás_pozícióvagy rendeltetési_pozíció vagy a hossza negatív.forrás_pozíció+hossznagyobb, mint a forrástömb hossza, vagy cél_pozíció+hossz nagyobb, mint a céltömb hossza.

Példa arraycopy() metódusra

A következő példában két egész szám tömböt hoztunk létre firstArray és secondArray . Két tömb egyesítéséhez megkeressük a hosszát, és a fal és a sal változóban tároljuk. Ezt követően létrehozunk egy új egész szám tömböt eredmény amely mindkét tömb hosszának összegét tárolja. Most másolja mindkét tömb minden elemét az eredménytömbbe a segítségével arraycopy() funkció.

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

Kimenet:

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

Lássunk egy másik példát, amelyben megadtuk a soure_array, a destination, a dest_position, a forrás pozícióját és a hosszt. A tömböt a megadott pozíciók és hossz szerint egyesíthetjük.

Példa

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

Az arraycopy() metódus használata nélkül

Példa két tömb egyesítésére

A következő példában két egész típusú firstArray és secondArray tömböt inicializáltunk. Manuálisan másolja át mindkét tömb minden elemét a mergedArray-be, és konvertálja a tömböt Stringgé az Array osztály toString() metódusával.

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

Kimenet:

 [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] 

Gyűjtemények használata

Példa két tömb egyesítésére Java nyelven

A következő példában két str1 és str2 string típusú tömböt inicializáltunk. Ezt követően az Arrays.asList() metódussal létrehoztuk az str1 listanézetét. Most létrehoztuk az str2 listanézetét, és hozzáadtuk az str2 összes elemét a listához. Ismét hajtson végre konverziót listáról tömbre, és tárolja az eredményül kapott tömböt az str3 változóba.

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

Kimenet:

 [A, E, I, O, U] 

Java Stream API

Stream.of() metódus

multiplexelés

A Stream.of() A Stream interfész metódusa egy szekvenciális rendezett adatfolyamot ad vissza, amelynek elemei az értékek.

string tömbbe java

Szintaxis

 static Stream of(T....values) 

Ahol M T a stream elemek típusa. A módszer elfogadja értékeket (az új folyam elemei).

flatMap() metódus

A flatMap() módszer a Stream interfész módszere. Az eredményből álló adatfolyamot adja vissza.

Szintaxis

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

Ahol R az új adatfolyam elemtípusa. A módszer elfogadja a térképező (egy függvény, amely minden olyan elemre vonatkozik, amely új értékeket hoz létre) paraméterként.

toArray() metódus

A toArray() A Stream interfész metódusa egy tömböt ad vissza, amely az adatfolyam elemeit tartalmazza.

részleges származékos szimbólum latex

Szintaxis

 Object[] toArray() 

Példa két tömb egyesítésére Stream API használatával

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

Kimenet:

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