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
Tas met NullPointerException ja avota vai mērķa masīvs ir nulle. Tā arī met ArrayIndexOutOfBoundsIzņēmums, ja :
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('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;>
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[] = { '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 } }
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('Merged array: '+ Arrays.toString(mergedArray)); } }
Izvade:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]