logo

Jak sloučit dvě pole v Javě

Sloučení dvou polí v Javě je podobné zřetězení nebo spojení dvou polí do jednoho objektu pole. Musíme sloučit dvě pole tak, aby si prvky pole zachovaly své původní pořadí v nově sloučeném poli. Prvky prvního pole předcházejí prvky druhého pole v nově sloučeném poli. Například:

 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 

Existují následující způsoby, jak sloučit dvě pole:

  • Jáva arraycopy() metoda
  • Bez použití arraycopy() metoda
  • Jáva Sbírky
  • Jáva Proud API

Metoda Java arraycopy().

Jáva arraycopy() je metoda Systém třídy, do které patří java.lang balík. Zkopíruje pole ze zadaného zdrojového pole na zadanou pozici cílového pole. Počet zkopírovaných prvků se rovná argumentu délky.

Syntax:

latexové seznamy
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parametry

    zdroj: Je to zdrojové pole.zdrojová_pozice: Počáteční bod ve zdrojovém poli.destinace: Je to cílové pole.cílová_pozice: Počáteční pozice v cílovém poli.délka: Počet prvků pole, které mají být zkopírovány

To hází Výjimka NullPointerException pokud je zdrojové nebo cílové pole null. To také hází ArrayIndexOutOfBoundsException if :

    zdrojová_pozicenebo cílová_pozice nebo délka je záporná.zdrojová_pozice+délkaje větší než délka zdrojového pole, popř cílová_pozice+délka je větší než délka cílového pole.

Příklad metody arraycopy().

V následujícím příkladu jsme vytvořili dvě celočíselná pole firstArray a secondArray . Abychom sloučili dvě pole, najdeme jejich délku a uložíme do proměnné fal a sal. Poté vytvoříme nové celočíselné pole výsledek který ukládá součet délek obou polí. Nyní zkopírujte každý prvek obou polí do výsledného pole pomocí arraycopy() funkce.

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

Výstup:

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

Podívejme se na další příklad, ve kterém jsme zadali soure_array, destination, dest_position, zdrojovou pozici a délku. Pole můžeme sloučit podle zadaných pozic a délky.

Příklad

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

Bez použití metody arraycopy().

Příklad sloučení dvou polí

skryté aplikace v tomto zařízení

V následujícím příkladu jsme inicializovali dvě pole firstArray a secondArray celočíselného typu. Ručně zkopírujte každý prvek obou polí do mergedArray a převeďte toto pole na String pomocí metody toString() třídy Array.

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

Výstup:

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

Používání kolekcí

Příklad sloučení dvou polí v Javě

V následujícím příkladu jsme inicializovali dvě pole str1 a str2 typu String. Poté jsme pomocí metody Arrays.asList() vytvořili seznam str1. Nyní jsme vytvořili zobrazení seznamu str2 a přidali všechny prvky str2 do seznamu. Opět proveďte převod ze seznamu na pole a výsledné pole uložte do proměnné str3.

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

Výstup:

vycpávka css
 [A, E, I, O, U] 

Java Stream API

Metoda Stream.of().

The Stream.of() metoda rozhraní Stream vrací sekvenční uspořádaný tok, jehož prvky jsou hodnoty.

Syntax

 static Stream of(T....values) 

Kde M T je typ prvků proudu. Metoda přijímá hodnoty (prvky nového proudu).

metoda flatMap().

The plochá mapa() metoda je metoda rozhraní Stream. Vrací proud sestávající z výsledku.

gimp ukládání jako jpeg

Syntax

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

Kde R je typ prvku nového proudu. Metoda akceptuje a mapovač (funkce, která se aplikuje na každý prvek, který vytváří proud nových hodnot) jako parametr.

datové struktury java

metoda toArray().

The toArray() metoda rozhraní Stream vrací pole obsahující prvky streamu.

Syntax

 Object[] toArray() 

Příklad sloučení dvou polí pomocí 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(&apos;Merged array: &apos;+ Arrays.toString(mergedArray)); } } 

Výstup:

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