logo

Java에서 두 배열을 병합하는 방법

Java에서 두 배열을 병합하는 것은 단일 배열 객체에서 두 배열을 연결하거나 결합하는 것과 비슷합니다. 새로 병합된 배열에서 배열 요소가 원래 순서를 유지하도록 두 배열을 병합해야 합니다. 새로 병합된 배열에서 첫 번째 배열의 요소는 두 번째 배열의 요소보다 앞에 있습니다. 예를 들어:

 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 

두 배열을 병합하는 방법은 다음과 같습니다.

  • 자바 배열복사() 방법
  • 사용하지 않고 배열복사() 방법
  • 자바 컬렉션
  • 자바 개울 API

자바 arraycopy() 메소드

자바 배열복사() 의 방법이다 체계 속한 클래스 java.lang 패키지. 지정된 소스 배열의 배열을 대상 배열의 지정된 위치로 복사합니다. 복사된 요소 수는 길이 인수와 같습니다.

통사론:

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

매개변수

    원천: 소스 배열입니다.소스_위치: 소스 배열의 시작점입니다.목적지: 대상 배열입니다.목적지_위치: 대상 배열의 시작 위치입니다.길이: 복사할 배열 요소의 개수

그것은 던진다 NullPointer예외 소스 또는 대상 배열이 null인 경우. 그것도 던진다 ArrayIndexOutOfBoundsException인 경우 :

닉 풀로스 블랙 라이트닝
    소스_위치또는 목적지_위치 또는 길이가 음수입니다.소스_위치+길이소스 배열의 길이보다 길거나 목적지_위치+길이 대상 배열의 길이보다 깁니다.

arraycopy() 메소드의 예

다음 예에서는 두 개의 정수 배열을 만들었습니다. 첫 번째 배열 그리고 두 번째 배열 . 두 배열을 병합하기 위해 길이를 찾아 각각 fal 및 sal 변수에 저장합니다. 그 후 새로운 정수 배열을 만듭니다. 결과 두 배열의 길이의 합을 저장합니다. 이제 다음을 사용하여 두 배열의 각 요소를 결과 배열에 복사합니다. 배열복사() 기능.

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

산출:

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

soure_array, 대상, dest_position, 소스 위치 및 길이를 지정한 또 다른 예를 살펴보겠습니다. 지정된 위치와 길이에 따라 배열을 병합할 수 있습니다.

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

arraycopy() 메소드를 사용하지 않고

두 배열 병합의 예

다음 예에서는 정수 유형의 두 배열 firstArray 및 secondArray를 초기화했습니다. 두 배열의 각 요소를 mergedArray에 수동으로 복사하고 Array 클래스의 toString() 메서드를 사용하여 해당 배열을 String으로 변환합니다.

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

산출:

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

컬렉션 사용

Java에서 두 배열을 병합하는 예

다음 예에서는 String 유형의 두 배열 str1 및 str2를 초기화했습니다. 그런 다음 Arrays.asList() 메서드를 사용하여 str1의 목록 보기를 만들었습니다. 이제 str2의 목록 보기를 만들고 str2의 모든 요소를 ​​목록에 추가했습니다. 다시 목록에서 배열로 변환을 수행하고 결과 배열을 str3 변수에 저장합니다.

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

산출:

 [A, E, I, O, U] 

자바 스트림 API

Stream.of() 메서드

그만큼 Stream.of() Stream 인터페이스의 메소드는 요소가 값인 순차적으로 정렬된 스트림을 반환합니다.

통사론

 static Stream of(T....values) 

어디 M 스트림 요소의 유형입니다. 이 방법은 허용됩니다. 가치 (새 스트림의 요소).

flatMap() 메서드

그만큼 플랫맵() method는 Stream 인터페이스의 메소드입니다. 결과로 구성된 스트림을 반환합니다.

통사론

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

어디 아르 자형 새 스트림의 요소 유형입니다. 이 방법은 매퍼 (새 값의 스트림을 생성하는 각 요소에 적용하는 함수)를 매개변수로 사용합니다.

toArray() 메서드

그만큼 toArray() Stream 인터페이스의 메소드는 스트림 요소를 포함하는 배열을 반환합니다.

통사론

 Object[] toArray() 

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

산출:

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