728x90
개요
// 1차원 배열 복사
int[] original = {1, 2, 3, 4, 5};
int[] copied = new int[original.length];
for(int i = 0; i < original.length; i++) {
copied[i] = original[i];
}
// 2차원 배열 복사
int[][] original2D = {{1, 2}, {3, 4}, {5, 6}};
int[][] copied2D = new int[original2D.length][original2D[0].length];
for(int i = 0; i < original2D.length; i++) {
for(int j = 0; j < original2D[i].length; j++) {
copied2D[i][j] = original2D[i][j];
}
}
Java를 사용하다보면 객체나 배열을 복사해야하는 경우가 있습니다. 이 때 위와 같이 반복문을 사용하여 복사를 해야 합니다.
하지만 Java에서는 배열을 복사하는 여러 가지 메서드를 제공합니다. 각각의 방법에 대해 알아보겠습니다.
clone() 메서드 사용
int[] original = {1, 2, 3, 4, 5};
int[] cloned = original.clone();
가장 간단한 방법으로, 배열의 clone() 메서드를 사용하는 것입니다.
특징
- 가장 간단한 방법
- 얕은 복사만 수행
- 다차원 배열의 경우 주의 필요
System.arraycopy() 사용
int[] original = {1, 2, 3, 4, 5};
int[] copied = new int[original.length];
System.arraycopy(original, 0, copied, 0, original.length);
System.arraycopy()는 지정된 배열의 지정된 범위를 새 배열의 지정된 위치에 복사합니다.
특징
- 가장 빠른 성능
- 부분 복사 가능
- 매개변수가 많아 사용이 다소 복잡
Arrays.copyOf() 사용
int[] original = {1, 2, 3, 4, 5};
int[] copied = Arrays.copyOf(original, original.length);
Arrays 클래스의 copyOf() 메서드를 사용하여 배열을 복사할 수 있습니다.
특징
- 새로운 길이 지정 가능
- 사용이 간단
- 내부적으로 System.arraycopy() 사용
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.12.21 - Java에서 Split() 메서드로 '+' 처리하기 (이스케이프 처리 방법) (0) | 2024.12.21 |
---|---|
[TIL, 일일 회고] 2024.12.19 - 바이토닉 수열(Bitonic Sequence)이란❓ (0) | 2024.12.19 |
[TIL, 일일 회고] 2024.12.18 - Integer.compare와 정렬 원리 톺아보기 (0) | 2024.12.18 |
[TIL, 일일 회고] 2024.12.17 - 자바 정렬 방법 비교: 뺄셈 연산자 vs Integer.compare() (0) | 2024.12.17 |
[백준, 1966번] 프린터 큐 (Queue 큐, PriorityQueue 우선순위 큐, Java) (0) | 2024.12.16 |