Java에서는 기본형 배열을 지원한다.
이러한 배열은 정적인 배열로 크기가 변하지 않는다.
그러면 두 개의 배열을 연결하기 위해서는 어떤 방법이 있을까?
다음과 같은 두 개의 배열이 있다고 생각해보자.
int[] a = {1, 2, 3};
int[] b = {4, 5, 6};
여기서 우리는 a와 b 배열을 연결하여 배열 c를 만들고자 한다.
int[] c = {1, 2, 3, 4, 5, 6};
가장 기본적인 방법은 반복문을 사용하는 것이다.
int[] c = new int[a.length + b.length];
for (int i = 0; i < a.length; i++) c[i] = a[i];
for (int i = 0; i < b.length; i++) c[i + a.length] = b[i];
또 다른 방법은 System.arraycopy()를 사용하는 것이다.
함수에는 5가지의 인자가 있다.
System.arraycopy(fromArray, fromStartIndex, toArray, toStartIndex, length);
fromArray : 복사하고자하는 배열이다.
fromStartIndex : 복사하고자하는 배열의 시작 index이다. (해당 idx부터 복사한다.)
toArray : 붙여넣고자하는 배열이다.
toStartIndex : 붙여넣고자하는 배열의 시작 index이다. (해당 idx부터 붙여넣기한다.)
length : 복사 붙여넣기하고자하는 길이이다. (IndexOutOfRange 발생 주의)
int[] c = new int[a.length + b.length];
System.arraycopy(a, 0, c, 0, a.length);
System.arraycopy(b, 0, c, a.length, b.length);
Java 8부터는 Stream을 지원하는데 Stream을 통해 다양한 기능을 구현할 수 있다.
Stream의 flatMap은 각각의 요소를 stream으로 변환하는 함수이다.
여기서는 Int 값이기 때문에 flatMapToInt를 사용한다.
int[] c = Stream.of(a, b).flatMapToInt(Arrays::stream).toArray();