Java에서는 Stream API의 concat() 메서드를 활용하면 두 개의 배열을 손쉽게 하나의 새로운 객체 배열로 병합할 수 있습니다. 이 글에서는 실제 예제 코드와 함께 그 동작 원리를 자세히 살펴보겠습니다.
병합 예제 코드
다음은 Java에서 두 개의 배열을 새로운 객체 배열로 병합하는 프로그램입니다.
import java.util.stream.Stream;
import java.util.Arrays;
import java.io.*;
public class Demo{
public static <T> Object[] concat_fun(T[] my_obj_1, T[] my_obj_2){
return Stream.concat(Arrays.stream(my_obj_1), Arrays.stream(my_obj_2)).toArray();
}
public static void main (String[] args){
Integer[] my_obj_1 = new Integer[]{67, 83, 90};
Integer[] my_obj_2 = new Integer[]{11, 0, 56};
Object[] my_obj_3 = concat_fun(my_obj_1,my_obj_2);
System.out.println("두 객체가 하나의 객체 배열로 병합된 결과 : " + Arrays.toString(my_obj_3));
}
}실행 결과
두 객체가 하나의 객체 배열로 병합된 결과 : [67, 83, 90, 11, 0, 56]
코드 설명
위 코드의 동작 과정을 단계별로 살펴보겠습니다.
1. concat_fun 메서드
Demo 클래스에는 concat_fun이라는 제네릭 정적 메서드가 정의되어 있습니다. 이 메서드는 제네릭 타입 <T>를 사용하기 때문에 Integer, String 등 어떤 참조 타입의 배열이든 인자로 받을 수 있습니다.
메서드 내부에서는 Arrays.stream()으로 각 배열을 스트림으로 변환한 뒤, Stream.concat()으로 두 스트림을 하나로 연결하고, 최종적으로 toArray()를 호출하여 병합된 결과를 Object[] 배열로 반환합니다.
2. main 메서드
main 메서드에서는 두 개의 Integer 배열(my_obj_1, my_obj_2)을 생성합니다. 이후 concat_fun을 호출하여 두 배열을 병합한 결과를 세 번째 객체 배열인 my_obj_3에 저장합니다.
마지막으로 Arrays.toString()을 사용해 병합된 배열의 내용을 문자열 형태로 변환하여 콘솔에 출력합니다. 실행 결과를 보면 첫 번째 배열의 요소 [67, 83, 90] 뒤에 두 번째 배열의 요소 [11, 0, 56]이 순서대로 이어진 것을 확인할 수 있습니다.
정리
이처럼 Stream API를 사용하면 반복문 없이도 간결하고 가독성 높은 코드로 배열을 병합할 수 있습니다. 특히 제네릭을 함께 활용하면 다양한 타입의 배열에 재사용 가능한 범용 메서드를 만들 수 있다는 점이 큰 장점입니다.