Arrays.copyOfRange() 메서드는 Java에서 배열의 일부분을 복사하여 새로운 배열을 생성할 때 사용하는 유틸리티 메서드입니다. 이 메서드는 주어진 범위의 배열 요소를 복사하고, 필요한 경우 복사된 배열의 크기를 조정할 수 있습니다.
메서드 시그니처:
- original: 복사할 원본 배열.
- from: 복사를 시작할 인덱스 (포함).
- to: 복사를 종료할 인덱스 (미포함).
copyOfRange()는 원본 배열의 일부를 복사하여 새로운 배열을 반환합니다. from 인덱스에서 시작하여 to 인덱스 바로 전까지의 원소들을 복사합니다.
예시 코드
import java.util.Arrays;
public class Main { public static void main(String[] args) {
// 원본 배열
int[] original = {1, 2, 3, 4, 5, 6};
// 배열의 1번 인덱스부터 4번 인덱스 전까지 복사
int[] copiedArray = Arrays.copyOfRange(original, 1, 4);
// 복사된 배열 출력
System.out.println(Arrays.toString(copiedArray)); // [2, 3, 4]
}
}
설명:
- 원본 배열 original은 {1, 2, 3, 4, 5, 6}입니다.
- Arrays.copyOfRange(original, 1, 4)는 인덱스 1부터 인덱스 4 직전까지의 배열 요소들, 즉 {2, 3, 4}를 복사하여 새로운 배열을 생성합니다.
- 주의: to 인덱스는 미포함입니다. 즉, from은 포함되지만 to는 포함되지 않습니다.
반환 값:
- 새로운 배열은 지정한 범위의 원소를 포함하며, 원본 배열의 크기와 관계없이 원하는 크기만큼 새 배열이 만들어집니다.
사용 예시: 배열의 일부 복사 및 배열 크기 조정
import java.util.Arrays;
public class Main { public static void main(String[] args) {
// 원본 배열
int[] original = {10, 20, 30, 40, 50, 60};
// 2번 인덱스부터 끝까지 복사
int[] copiedArray1 = Arrays.copyOfRange(original, 2, original.length);
System.out.println(Arrays.toString(copiedArray1)); // [30, 40, 50, 60]
// 배열의 처음부터 3번째 인덱스까지 복사
int[] copiedArray2 = Arrays.copyOfRange(original, 0, 3);
System.out.println(Arrays.toString(copiedArray2)); // [10, 20, 30]
}
}
- 복사할 범위 설정 가능: 배열의 특정 부분만 복사할 수 있습니다. 예를 들어, 배열의 첫 3개 요소만 복사하거나 마지막 몇 개 요소만 복사하는 경우에 유용합니다.
- 새 배열 반환: copyOfRange()는 원본 배열에서 지정된 범위의 요소들을 포함하는 새로운 배열을 반환합니다. 원본 배열은 변경되지 않습니다.
- 크기 조정: copyOfRange()는 범위 내의 요소를 복사하면서 새 배열의 크기를 자동으로 맞춰줍니다. 배열 크기를 변경할 수 있어, 예를 들어 원본 배열보다 작은 크기의 배열을 반환할 수 있습니다.
- 범위 오류 처리: from이 to보다 클 경우 ArrayIndexOutOfBoundsException이 발생합니다. from과 to가 배열의 유효 범위 내에 있는지 확인해야 합니다.
from 또는 to 값이 범위를 벗어날 경우:
- 만약 to 값이 배열의 크기보다 크면, copyOfRange()는 자동으로 원본 배열의 끝까지 복사합니다.
- 예를 들어, 배열의 크기가 5이고, copyOfRange(original, 1, 10)을 호출하면 to가 10이지만 배열 크기는 5이므로, 실제로는 to 값이 배열 크기인 5로 조정되어 복사가 진행됩니다.
int[] copiedArray = Arrays.copyOfRange(original, 1, 10);
// [20, 30, 40, 50] (to 값이 10을 초과해도 배열 크기만큼 복사됨)
결론:
Arrays.copyOfRange()는 배열의 일부분을 복사하거나 배열을 자를 때 유용한 메서드로, 간단하게 범위 내의 배열을 새로운 배열로 복사하는 데 사용됩니다. from과 to를 적절히 설정하여 원하는 범위만큼 배열을 추출할 수 있습니다.