자바에서 배열을 복사하는 방법에는 `System.arraycopy()`, `Arrays.copyOf()`, 그리고 `clone()` 메서드 세 가지가 있습니다.
각 방법의 장단점을 살펴보겠습니다.
1. System.arraycopy() 사용
// 원본 배열
int[] originalArray = {1, 2, 3, 4, 5};
// 복사할 배열
int[] copiedArray = new int[originalArray.length];
// System.arraycopy() 사용
System.arraycopy(originalArray, 0, copiedArray, 0, originalArray.length);
// 결과 확인
System.out.println(Arrays.toString(copiedArray));
- 장점
- 속도가 빠르다.
- 길이가 다른 배열에도 사용 가능하다.
- 단점
- 복사할 배열의 타입이 원본과 일치해야 한다.
- 길이가 다른 배열에 복사하는 경우 길이를 조절해야 한다.
2. Arrays.copyOf() 사용
// 원본 배열
int[] originalArray = {1, 2, 3, 4, 5};
// Arrays.copyOf() 사용
int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);
// 결과 확인
System.out.println(Arrays.toString(copiedArray));
- 장점
- 간단하고 편리하다.
- 원본 배열의 일부를 복사할 수 있다.
- 단점
- 원본 배열의 타입과 복사할 배열의 타입이 동일해야 한다.
- 길이가 다른 배열에 복사하는 경우, 길이 조절이 불가능하다.
3. clone() 메서드 사용
// 원본 배열
int[] originalArray = {1, 2, 3, 4, 5};
// clone() 메서드 사용
int[] copiedArray = originalArray.clone();
// 결과 확인
System.out.println(Arrays.toString(copiedArray));
- 장점
- 간단하게 배열을 복제할 수 있다.
- `Object` 클래스의 메서드이므로 모든 객체에 사용 가능하다.
- 단점
- 얕은 복사를 수행하므로 다차원 배열이나 객체 배열에는 적합하지 않다.
- 길이가 다른 배열에는 사용할 수 없다.
장단점 비교
- `System.arraycopy()`: 빠르고 유연하지만 코드가 다소 복잡하다.
- `Arrays.copyOf()`: 간단하고 사용하기 편리하지만, 원본과 복사본의 타입이 동일해야 하며 길이를 조절하기 어렵다.
- `clone()`: 간단하게 배열을 복제할 수 있지만, 얕은 복사이므로 다차원 배열이나 객체 배열에는 적합하지 않다.
최종 선택은 사용 사례에 따라 다릅니다. 성능이 중요한 상황에서는 `System.arraycopy()`를 고려하고, 간단한 작업이나 코드 가독성이 중요한 상황에서는 `Arrays.copyOf()`나 `clone()`을 선택할 수 있습니다.
'study > TIP' 카테고리의 다른 글
rath 셋팅 (1) | 2024.03.28 |
---|---|
CUBRID 한글 초성 검색 (2) | 2024.03.07 |
html to image (0) | 2024.03.03 |
한글주소 인코딩, url encode (1) | 2024.02.27 |
컬럼의 항목별 5건씩 뽑아주세요 (0) | 2024.02.23 |