두 배열을 합치는 방법
이번 포스팅은 Java에서 두 개의 배열을 연결하여 하나의 새로운 배열을 만드는 몇 가지 방법을 소개합니다.
방법 1. 반복문
가장 심플한 방법으로 반복문을 사용할 수 있습니다.
두 배열의 길이를 더한 값을 새로운 배열의 크기로 설정합니다.
첫 번째 배열을 순회하여 새로운 배열에 값을 할당합니다.
똑같은 방법으로 두 번째 배열의 값을 새로운 배열에 할당합니다.
public static void main(String args[]) {
int[] intArray1 = {1, 2, 3, 4};
int[] intArray2 = {3, 4, 5, 6};
int[] newArray = new int[intArray1.length + intArray2.length];
int index = 0;
for(int num: intArray1) {
newArray[index++] = num;
}
for(int num: intArray2) {
newArray[index++] = num;
}
System.out.println("intArray1: " + Arrays.toString(intArray1));
System.out.println("intArray2: " + Arrays.toString(intArray2));
System.out.println("newArray: " + Arrays.toString(newArray));
}
[실행 결과]
intArray1: [1, 2, 3, 4]
intArray2: [3, 4, 5, 6]
newArray: [1, 2, 3, 4, 3, 4, 5, 6]
방법 2. System 클래스의 arraycopy 메서드
두 번째 방법으로 System 클래스의 arraycopy() 메서드를 사용합니다.
public static native void arraycopy(
Object src, int srcPos,
Object dest, int destPos,
int length);
Object src
- 값이 존재하는 배열입니다.
int srcPos
- 첫 번째 매개변수(Object src)의 시작 위치를 설정합니다.
- 0으로 설정하는 경우 0번째 인덱스부터 시작합니다.
Object dest
- 첫 번째 매개변수(Object src)에서 복사된 값이 할당되는 배열입니다.
- 즉, 새로운 배열입니다.
int destPos
- 세 번째 매개변수(Object dest)의 시작 위치를 설정합니다.
- 0으로 설정하는 경우 0번째 인덱스부터 값이 할당됩니다.
int length
- 첫 번째 매개변수(Object src)의 두 번째 매개변수(int srcPos)인 시작 위치에서 복사할 요소의 개수를 설정합니다.
다음 예제는 두 배열의 길이를 더한 값을 새로운 배열의 크기로 설정 후 System 클래스의 arraycopy() 메서드를 사용하여 두 배열의 값을 새로운 배열에 할당합니다.
public static void main(String args[]) {
int[] intArray1 = {1, 2, 3, 4};
int[] intArray2 = {3, 4, 5, 6};
int[] newArray = new int[intArray1.length + intArray2.length];
System.arraycopy(intArray1, 0, newArray, 0, intArray1.length);
System.arraycopy(intArray2, 0, newArray, intArray1.length, intArray2.length);
System.out.println("intArray1: " + Arrays.toString(intArray1));
System.out.println("intArray2: " + Arrays.toString(intArray2));
System.out.println("newArray: " + Arrays.toString(newArray));
}
[실행 결과]
intArray1: [1, 2, 3, 4]
intArray2: [3, 4, 5, 6]
newArray: [1, 2, 3, 4, 3, 4, 5, 6]
방법 3. Collection으로 변환 후 addAll 메서드
컬렉션(Collection)을 활용하여 두 배열을 합칠 수 있습니다.
첫 번째 배열을 초기값으로 가지는 새로운 List 객체를 생성합니다.
List 객체에서 addAll() 메서드를 사용하여 두 번째 배열의 값을 추가합니다.
마지막으로 List 객체의 값을 배열에 할당합니다.
public static void main(String args[]) {
String[] strArray1 = {"A", "B"};
String[] strArray2 = {"B", "C", "D"};
// 첫 번째 배열을 초기값으로 가지는 List 객체 생성
List<String> newList = new ArrayList<>(Arrays.asList(strArray1));
// addAll() 메서드를 호출하여 두 번째 배열의 값을 추가
newList.addAll(new ArrayList<>(Arrays.asList(strArray2)));
// List 객체의 값을 배열에 할당
String[] newArray = new String[newList.size()];
newArray = newList.toArray(newArray);
System.out.println("strArray1: " + Arrays.toString(strArray1));
System.out.println("strArray2: " + Arrays.toString(strArray2));
System.out.println("newArray: " + Arrays.toString(newArray));
}
[실행 결과]
strArray1: [A, B]
strArray2: [B, C, D]
newArray: [A, B, B, C, D]
방법 4. Stream API
Java 버전이 1.8 이상인 경우 Stream에서 제공하는 concat() 메서드를 사용하여 두 배열이 연결된 새로운 배열을 생성할 수 있습니다.
두 배열을 스트림으로 변환 후 concat() 메서드를 사용하여 스트림을 하나로 연결합니다.
연결된 스트림을 배열로 변환하기 위해 toArray() 메서드를 호출합니다.
public static void main(String args[]) {
String[] strArray1 = {"A", "B"};
String[] strArray2 = {"B", "C", "D"};
String[] newArray = Stream.concat(Arrays.stream(strArray1),
Arrays.stream(strArray2))
.toArray(String[]::new);
System.out.println("strArray1: " + Arrays.toString(strArray1));
System.out.println("strArray2: " + Arrays.toString(strArray2));
System.out.println("newArray: " + Arrays.toString(newArray));
}
[실행 결과]
strArray1: [A, B]
strArray2: [B, C, D]
newArray: [A, B, B, C, D]
'Java > 배열' 카테고리의 다른 글
[Java]배열 지정된 범위의 숫자 생성하는 방법 (0) | 2022.08.22 |
---|---|
[Java]두 배열을 비교하는 방법 (1) | 2022.08.17 |
[Java]배열에 특정 값이 존재하는지 확인하는 방법 (2) | 2022.08.16 |
[Java]배열을 리스트로 변환(Array to List) (0) | 2022.08.16 |
[Java]배열에서 중복 제거하는 방법 (0) | 2022.05.07 |
댓글