Spajanje dvaju nizova u Javi slično je spajanju ili kombiniranju dvaju nizova u jedan objekt niza. Moramo spojiti dva niza tako da elementi niza zadrže svoj izvorni poredak u novospojenom nizu. Elementi prvog niza prethode elementima drugog niza u novospojenom nizu. Na primjer:
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
Postoje sljedeći načini za spajanje dva niza:
- Java arraycopy() metoda
- Bez korištenja arraycopy() metoda
- Java Zbirke
- Java Stream API
Metoda Java arraycopy().
Java arraycopy() je metoda Sustav klasa kojoj pripada java.lang paket. Kopira polje iz navedenog izvornog polja na navedenu poziciju odredišnog polja. Broj kopiranih elemenata jednak je argumentu duljine.
Sintaksa:
java lambda
public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length)
Parametri
Baca se NullPointerException ako je izvorni ili odredišni niz null. Također baca ArrayIndexOutOfBoundsException if :
Primjer metode arraycopy().
U sljedećem primjeru stvorili smo dva niza cijelih brojeva firstArray i secondArray . Kako bismo spojili dva niza, nalazimo njegovu duljinu i pohranjujemo ga u varijabli fal i sal. Nakon toga kreiramo novi niz cijelih brojeva proizlaziti koji pohranjuje zbroj duljina oba niza. Sada kopirajte svaki element oba polja u polje rezultata koristeći arraycopy() 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 } }
Izlaz:
[23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3]
Pogledajmo još jedan primjer u kojem smo naveli soure_array, destination, dest_position, izvorni položaj i duljinu. Možemo spojiti niz prema navedenim pozicijama i duljini.
Primjer
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;>
Bez korištenja metode arraycopy().
Primjer spajanja dva niza
java podniz
U sljedećem primjeru smo inicijalizirali dva niza firstArray i secondArray cjelobrojnog tipa. Ručno kopirajte svaki element oba niza u mergedArray i pretvorite taj niz u String pomoću metode toString() klase 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 } }
Izlaz:
[56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15]
Korištenje zbirki
Primjer spajanja dva niza u Javi
java nasljeđivanje
U sljedećem primjeru smo inicijalizirali dva niza str1 i str2 tipa String. Nakon toga izradili smo prikaz popisa str1 pomoću metode Arrays.asList(). Sada smo stvorili prikaz popisa str2 i dodali sve elemente str2 na popis. Ponovno izvedite pretvorbu iz popisa u niz i pohranite rezultirajući niz u str3 varijablu.
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 } }
Izlaz:
[A, E, I, O, U]
Java Stream API
Metoda Stream.of().
The Stream.of() metoda Stream sučelja vraća sekvencijalni poredani tok čiji su elementi vrijednosti.
string jsonobject
Sintaksa
static Stream of(T....values)
Gdje je M T je vrsta elemenata toka. Metoda prihvaća vrijednosti (elementi novog toka).
metoda flatMap().
The ravna karta() metoda je metoda Stream sučelja. Vraća tok koji se sastoji od rezultata.
Sintaksa
Stream flatMap(Function<? Super T, ? extends Stream> mapper)
Gdje R je tip elementa novog toka. Metoda prihvaća a kartograf (funkcija koja se primjenjuje na svaki element koji proizvodi niz novih vrijednosti) kao parametar.
metoda toArray().
The toArray() metoda sučelja Stream vraća niz koji sadrži elemente toka.
kako sortirati niz u Javi
Sintaksa
Object[] toArray()
Primjer spajanja dva polja pomoću Stream API-ja
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)); } }
Izlaz:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]