logo

Kā apvienot divus masīvus Java

Divu masīvu sapludināšana Java programmā ir līdzīga divu masīvu savienošanai vai apvienošanai vienā masīva objektā. Mums ir jāapvieno divi masīvi, lai masīva elementi saglabātu savu sākotnējo secību tikko apvienotajā masīvā. Pirmā masīva elementi tikko apvienotajā masīvā ir pirms otrā masīva elementiem. Piemēram:

 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 

Ir šādi veidi, kā apvienot divus masīvus:

  • Java masīva kopija () metodi
  • Nelietojot masīva kopija () metodi
  • Java Kolekcijas
  • Java Straume API

Java arraycopy() metode

Java masīva kopija () ir metode Sistēma klasei, kas pieder java.lang iepakojums. Tas kopē masīvu no norādītā avota masīva uz norādīto mērķa masīva pozīciju. Kopēto elementu skaits ir vienāds ar garuma argumentu.

Sintakse:

primitīvie datu tipi java
 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

Parametri

    avots: tas ir avota masīvs.avota_pozīcija: sākuma punkts avota masīvā.galamērķis: tas ir galamērķa masīvs.galamērķa_pozīcija: sākuma pozīcija mērķa masīvā.garums: kopējamo masīva elementu skaits

Tas met NullPointerException ja avota vai mērķa masīvs ir nulle. Tā arī met ArrayIndexOutOfBoundsIzņēmums, ja :

    avota_pozīcijavai galamērķa_pozīcija vai garums ir negatīvs.avota_pozīcija+garumsir lielāks par avota masīva garumu vai galamērķa_pozīcija+garums ir lielāks par mērķa masīva garumu.

Metodes arraycopy() piemērs

Nākamajā piemērā mēs esam izveidojuši divus veselu skaitļu masīvus firstArray un secondArray . Lai apvienotu divus masīvus, mēs atrodam tā garumu un saglabājam attiecīgi mainīgajā fal un sal. Pēc tam mēs izveidojam jaunu veselu skaitļu masīvu rezultāts kurā tiek saglabāta abu masīvu garumu summa. Tagad kopējiet katru abu masīvu elementu rezultātu masīvā, izmantojot masīva kopija () funkciju.

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

Izvade:

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

Apskatīsim vēl vienu piemēru, kurā esam norādījuši soure_array, destination, dest_position, avota pozīciju un garumu. Masīvu varam apvienot atbilstoši norādītajām pozīcijām un garumam.

Piemērs

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

Neizmantojot arraycopy() metodi

Divu masīvu apvienošanas piemērs

daļējs lateksa atvasinājums

Nākamajā piemērā mēs esam inicializējuši divus vesela skaitļa tipa masīvus firstArray un secondArray. Manuāli kopējiet katru abu masīvu elementu apvienotajā masīvā un pārveidojiet šo masīvu par String, izmantojot klases Array metodi toString().

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

Izvade:

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

Kolekcijas izmantošana

Divu masīvu apvienošanas piemērs Java

vlc lejupielādēt youtube video

Nākamajā piemērā mēs esam inicializējuši divus string tipa masīvus str1 un str2. Pēc tam esam izveidojuši str1 saraksta skatu, izmantojot metodi Arrays.asList(). Tagad esam izveidojuši str2 saraksta skatu un sarakstam pievienojuši visus str2 elementus. Atkal veiciet pārvēršanu no saraksta uz masīvu un saglabājiet iegūto masīvu str3 mainīgajā.

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

Izvade:

 [A, E, I, O, U] 

Java Stream API

Stream.of() metode

The Stream.of() Straumes saskarnes metode atgriež secīgi sakārtotu straumi, kuras elementi ir vērtības.

pavedienu sinhronizācija

Sintakse

 static Stream of(T....values) 

Kur M T ir straumes elementu veids. Metode pieņem vērtības (jaunās straumes elementi).

flatMap() metode

The flatMap() metode ir straumes saskarnes metode. Tas atgriež straumi, kas sastāv no rezultāta.

Sintakse

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

Kur R ir jaunās straumes elementa veids. Metode pieņem a kartētājs (funkcija, kas jāpiemēro katram elementam, kas rada jaunu vērtību straumi) kā parametrs.

toArray() metode

The toArray() Straumes saskarnes metode atgriež masīvu, kurā ir straumes elementi.

atjauniniet SQL ar pievienošanos

Sintakse

 Object[] toArray() 

Divu masīvu sapludināšanas piemērs, izmantojot 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)); } } 

Izvade:

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