본문 바로가기
study/TIP

java array copy

by 휘루걸음 2024. 3. 3.
728x90
반응형

자바에서 배열을 복사하는 방법에는 `System.arraycopy()`, `Arrays.copyOf()`, 그리고 `clone()` 메서드 세 가지가 있습니다. 

 

반응형

각 방법의 장단점을 살펴보겠습니다.

 

728x90

 

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()`을 선택할 수 있습니다.

728x90
반응형

'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