logo

Ako zlúčiť dve polia v Jave

Zlúčenie dvoch polí v jazyku Java je podobné ako zreťazenie alebo spojenie dvoch polí do jedného objektu poľa. Musíme zlúčiť dve polia tak, aby si prvky poľa zachovali svoje pôvodné poradie v novo zlúčenom poli. Prvky prvého poľa predchádzajú prvky druhého poľa v novo zlúčenom poli. Naprí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ú nasledujúce spôsoby, ako zlúčiť dve polia:

  • Java arraycopy() metóda
  • Bez použitia arraycopy() metóda
  • Java zbierky
  • Java Prúd API

metóda Java arraycopy().

Java arraycopy() je metóda Systém trieda, do ktorej patrí java.lang balík. Skopíruje pole zo zadaného zdrojového poľa na zadanú pozíciu cieľového poľa. Počet skopírovaných prvkov sa rovná argumentu dĺžky.

Syntax:

rovnosť reťazcov v jave
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parametre

    zdroj: Je to zdrojové pole.zdrojová_pozícia: Počiatočný bod v zdrojovom poli.destinácia: Ide o cieľové pole.cieľová_pozícia: Počiatočná pozícia v cieľovom poli.dĺžka: Počet prvkov poľa, ktoré sa majú skopírovať

To hádže Výnimka NullPointerException ak je zdrojové alebo cieľové pole null. Tiež hádže ArrayIndexOutOfBoundsException if :

    zdrojová_pozíciaalebo cieľová_pozícia alebo dĺžka je záporná.zdrojová_pozícia+dĺžkaje väčšia ako dĺžka zdrojového poľa, príp cieľová_pozícia+dĺžka je väčšia ako dĺžka cieľového poľa.

Príklad metódy arraycopy().

V nasledujúcom príklade sme vytvorili dve celočíselné polia firstArray a secondArray . Aby sme zlúčili dve polia, nájdeme ich dĺžku a uložíme do premennej fal a sal. Potom vytvoríme nové celočíselné pole výsledok ktorý ukladá súčet dĺžok oboch polí. Teraz skopírujte každý prvok oboch polí do výsledného poľa pomocou arraycopy() funkciu.

 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ýkon:

skús chytiť java
 [23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3] 

Pozrime sa na ďalší príklad, v ktorom sme zadali soure_array, destination, dest_position, zdrojovú pozíciu a dĺžku. Pole vieme zlúčiť podľa zadaných pozícií a dĺžky.

Prí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žitia metódy arraycopy().

Príklad zlúčenia dvoch polí

V nasledujúcom príklade sme inicializovali dve polia firstArray a secondArray celočíselného typu. Manuálne skopírujte každý prvok oboch polí do mergedArray a konvertujte toto pole na String pomocou metódy toString() triedy 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ýkon:

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

Používanie kolekcií

Príklad zlúčenia dvoch polí v Jave

V nasledujúcom príklade sme inicializovali dve polia str1 a str2 typu String. Potom sme pomocou metódy Arrays.asList() vytvorili zoznam str1. Teraz sme vytvorili zobrazenie zoznamu str2 a pridali všetky prvky str2 do zoznamu. Opäť vykonajte konverziu zo zoznamu do poľa a uložte výsledné pole do premennej 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ýkon:

 [A, E, I, O, U] 

Java Stream API

Metóda Stream.of().

java zoznam do poľa

The Stream.of() Metóda rozhrania Stream vracia sekvenčný usporiadaný tok, ktorého prvkami sú hodnoty.

jsp javatpoint

Syntax

 static Stream of(T....values) 

Kde M T je typ prvkov prúdu. Metóda akceptuje hodnoty (prvky nového prúdu).

metóda flatMap().

The plochá mapa() metóda je metóda rozhrania Stream. Vracia prúd pozostávajúci z výsledku.

Syntax

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

Kde R je typ prvku nového prúdu. Metóda akceptuje a mapovač (funkcia, ktorá sa má použiť na každý prvok, ktorý vytvára prúd nových hodnôt) ako parameter.

metóda toArray().

The toArray() metóda rozhrania Stream vracia pole obsahujúce prvky prúdu.

java pridať do poľa

Syntax

 Object[] toArray() 

Príklad zlúčenia dvoch polí pomocou 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ýkon:

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