[ TIL ] 배열 연결하기

codesver·2023년 1월 28일
0

TIL

목록 보기
1/8
post-thumbnail

Java에서는 기본형 배열을 지원한다.

이러한 배열은 정적인 배열로 크기가 변하지 않는다.

그러면 두 개의 배열을 연결하기 위해서는 어떤 방법이 있을까?

다음과 같은 두 개의 배열이 있다고 생각해보자.

int[] a = {1, 2, 3};
int[] b = {4, 5, 6};

여기서 우리는 a와 b 배열을 연결하여 배열 c를 만들고자 한다.

int[] c = {1, 2, 3, 4, 5, 6};
  1. 반복문

가장 기본적인 방법은 반복문을 사용하는 것이다.

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];
  1. System.arraycopy()

또 다른 방법은 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);
  1. Stream.of()

Java 8부터는 Stream을 지원하는데 Stream을 통해 다양한 기능을 구현할 수 있다.

Stream의 flatMap은 각각의 요소를 stream으로 변환하는 함수이다.

여기서는 Int 값이기 때문에 flatMapToInt를 사용한다.

int[] c = Stream.of(a, b).flatMapToInt(Arrays::stream).toArray();
profile
Hello, Devs!

0개의 댓글