logo

Kako združiti dve matriki v Javi

Združevanje dveh matrik v Javi je podobno združevanju ali združevanju dveh matrik v en sam matrični predmet. Dve matriki moramo združiti tako, da elementi matrike ohranijo prvotni vrstni red v na novo združeni matriki. Elementi prve matrike so pred elementi druge matrike v novo združeni matriki. Na primer:

 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 

Obstajajo naslednji načini za združitev dveh nizov:

  • Java arraycopy() metoda
  • Brez uporabe arraycopy() metoda
  • Java Zbirke
  • Java Tok API

Metoda Java arraycopy().

Java arraycopy() je metoda Sistem razred, ki mu pripada java.lang paket. Kopira matriko iz podane izvorne matrike na določeno mesto ciljne matrike. Število kopiranih elementov je enako argumentu dolžine.

Sintaksa:

primer podatkov json
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parametri

    vir: Je izvorni niz.izvor_položaj: Začetna točka v izvornem nizu.cilj: To je ciljni niz.ciljni_položaj: začetni položaj v ciljnem nizu.dolžina: Število elementov matrike, ki jih želite kopirati

Vrže NullPointerException če je izvorna ali ciljna matrika ničelna. Prav tako meče ArrayIndexOutOfBoundsException if :

    izvor_položajoz ciljni_položaj ali je dolžina negativna.izvorni položaj+dolžinaje večja od dolžine izvornega polja, oz ciljni_položaj+dolžina je večja od dolžine ciljne matrike.

Primer metode arraycopy().

V naslednjem primeru smo ustvarili dve nizi celih števil firstArray in secondArray . Za združitev dveh nizov poiščemo njegovo dolžino in shranimo v spremenljivki fal oziroma sal. Po tem ustvarimo novo niz celih števil rezultat ki hrani vsoto dolžin obeh nizov. Zdaj kopirajte vsak element obeh matrik v matriko rezultatov z uporabo arraycopy() funkcijo.

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

Izhod:

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

Oglejmo si še en primer, v katerem smo določili soure_array, destination, dest_position, izvorni položaj in dolžino. Matriko lahko združimo glede na določene položaje in dolžino.

Primer

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

Brez uporabe metode arraycopy().

Primer spajanja dveh nizov

V naslednjem primeru smo inicializirali dve matriki firstArray in secondArray celoštevilskega tipa. Ročno kopirajte vsak element obeh matrik v mergedArray in pretvorite to matriko v String z uporabo metode toString() razreda 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 } } 

Izhod:

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

Uporaba zbirk

Primer združevanja dveh nizov v Javi

V naslednjem primeru smo inicializirali dve matriki str1 in str2 tipa String. Po tem smo ustvarili pogled seznama str1 z uporabo metode Arrays.asList(). Zdaj smo ustvarili pogled seznama str2 in na seznam dodali vse elemente str2. Ponovno izvedite pretvorbo s seznama v matriko in shranite nastalo matriko v spremenljivko str3.

podniz niz java
 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 } } 

Izhod:

 [A, E, I, O, U] 

Java Stream API

Metoda Stream.of().

The Stream.of() metoda vmesnika Stream vrne zaporedni urejen tok, katerega elementi so vrednosti.

Sintaksa

 static Stream of(T....values) 

Kje M T je vrsta tokovnih elementov. Metoda sprejema vrednote (elementi novega toka).

algoritem za bfs

metoda flatMap().

The flatMap() metoda je metoda vmesnika Stream. Vrne tok, sestavljen iz rezultata.

Sintaksa

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

Kje R je tip elementa novega toka. Metoda sprejema a maper (funkcija, ki se uporabi za vsak element, ki ustvari tok novih vrednosti) kot parameter.

metoda toArray().

The toArray() metoda vmesnika Stream vrne matriko, ki vsebuje elemente toka.

Sintaksa

 Object[] toArray() 

Primer združevanja dveh nizov z uporabo Stream API-ja

obravnavanje izjem java
 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)); } } 

Izhod:

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