Łączenie dwóch tablic w Javie przypomina łączenie lub łączenie dwóch tablic w jeden obiekt tablicowy. Musimy połączyć dwie tablice w taki sposób, aby elementy tablicy zachowały swoją pierwotną kolejność w nowo połączonej tablicy. Elementy pierwszej tablicy poprzedzają elementy drugiej tablicy w nowo połączonej tablicy. Na przykład:
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
Istnieją następujące sposoby łączenia dwóch tablic:
- Jawa kopia tablicy() metoda
- Bez używania kopia tablicy() metoda
- Jawa Kolekcje
- Jawa Strumień API
Metoda Java arraycopy().
Jawa kopia tablicy() jest metodą System klasa do której należy java.lang pakiet. Kopiuje tablicę z określonej tablicy źródłowej do określonej pozycji tablicy docelowej. Liczba skopiowanych elementów jest równa argumentowi długości.
Składnia:
najlepsze samochody na świecie
public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length)
Parametry
Rzuca Wyjątek NullPointer jeśli tablica źródłowa lub docelowa ma wartość null. Również rzuca ArrayIndexOutOfBoundsException jeśli :
Przykład metody arraycopy().
W poniższym przykładzie utworzyliśmy dwie tablice liczb całkowitych pierwsza tablica I druga tablica . Aby połączyć dwie tablice, znajdujemy jej długość i zapisujemy ją odpowiednio w zmiennych fal i sal. Następnie tworzymy nową tablicę liczb całkowitych wynik który przechowuje sumę długości obu tablic. Teraz skopiuj każdy element obu tablic do tablicy wynikowej, używając kopia tablicy() funkcjonować.
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 } }
Wyjście:
ciąg porównawczy
[23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3]
Zobaczmy inny przykład, w którym określiliśmy tablicę_źródłową, miejsce docelowe, pozycję_docelową, pozycję źródłową i długość. Możemy scalić tablicę według określonych pozycji i długości.
Przykład
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 użycia metody arraycopy().
Przykład połączenia dwóch tablic
W poniższym przykładzie zainicjowaliśmy dwie tablice FirstArray i secondArray typu całkowitego. Ręcznie skopiuj każdy element obu tablic do mergedArray i przekonwertuj tę tablicę na String za pomocą metody toString() klasy 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 } }
Wyjście:
[56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15]
Korzystanie z kolekcji
Przykład łączenia dwóch tablic w Javie
W poniższym przykładzie zainicjowaliśmy dwie tablice str1 i str2 typu String. Następnie utworzyliśmy widok listy str1 za pomocą metody Arrays.asList(). Teraz stworzyliśmy widok listy str2 i dodaliśmy do listy wszystkie elementy str2. Ponownie wykonaj konwersję z listy na tablicę i zapisz wynikową tablicę w zmiennej str3.
10 z 50,00
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 } }
Wyjście:
[A, E, I, O, U]
Interfejs API strumienia Java
Metoda Stream.of().
The Strumień() Metoda interfejsu Stream zwraca sekwencyjny uporządkowany strumień, którego elementy są wartościami.
Składnia
static Stream of(T....values)
Gdzie M T to typ elementów strumienia. Metoda akceptuje wartości (elementy nowego strumienia).
pobierz xvideoservicethief ubuntu 14.04
metoda flatMap().
The płaskaMapa() metoda jest metodą interfejsu Stream. Zwraca strumień składający się z wyniku.
Składnia
Stream flatMap(Function<? Super T, ? extends Stream> mapper)
Gdzie R to typ elementu nowego strumienia. Metoda akceptuje a maper (funkcja do zastosowania do każdego elementu, który generuje strumień nowych wartości) jako parametr.
toArray().
The do tablicy() Metoda interfejsu Stream zwraca tablicę zawierającą elementy strumienia.
Składnia
Object[] toArray()
Przykład połączenia dwóch tablic przy użyciu Stream API
testowanie kompatybilności
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)); } }
Wyjście:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]