배열 복사
1차원 배열
1. System.arraycopy 사용
배열을 빠르게 복사하는 데 사용
int[] original = {1, 2, 3, 4, 5};
int[] copy = new int[original.length];
System.arraycopy(original, 0, copy, 0, original.length);
파라미터
1. original (원본 배열의 현재 행): 2차원 배열 original의 i번째 행. 각 행은 1차원 배열로 취급.
2. 0 (원본 배열에서의 시작 위치): 복사를 시작할 원본 배열의 인덱스. 여기서는 각 행의 처음부터 복사를 시작하므로 0.
3. copy (목적지 배열의 현재 행): 2차원 배열 copy의 i번째 행. 복사된 데이터를 저장할 대상 배열의 행.
4. 0 (목적지 배열에서의 시작 위치): 데이터를 저장할 대상 배열의 인덱스. 여기서도 각 행의 처음부터 데이터를 저장하므로 0
5. original.length (복사할 요소의 수): 원본 배열의 i번째 행의 길이. 각 행의 모든 요소를 복사하기 위해 해당 행의 길이를 사용.
2. Arrays.copyOf 사용
배열을 복사하고 새로운 배열을 반환
import java.util.Arrays;
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOf(original, original.length);
3. clone 사용
배열 객체의 복사본을 만듦
int[] original = {1, 2, 3, 4, 5};
int[] copy = original.clone();
4. for 루프 사용
for 루프를 사용하여 배열의 각 요소를 복사할 수도 있음
int[] original = {1, 2, 3, 4, 5};
int[] copy = new int[original.length];
for (int i = 0; i < original.length; i++) {
copy[i] = original[i];
}
5. Arrays.copyOfRange 사용
배열의 특정 범위를 복사할 때 Arrays.copyOfRange를 사용할 수 있음
import java.util.Arrays;
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOfRange(original, 0, original.length);
파라미터
1. original (원본 배열): 복사할 원본 배열. 이 배열의 일부 요소를 복사하여 새로운 배열을 만듦.
2. 0 (시작 인덱스, 포함): 복사를 시작할 원본 배열의 인덱스. 이 인덱스의 요소가 복사 범위에 포함.
3. original.length (종료 인덱스, 미포함): 복사가 끝나는 원본 배열의 인덱스. 이 인덱스의 요소는 복사 범위에 포함되지 않음.
2차원 배열
1. System.arraycopy 사용
int[][] original = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] copy = new int[original.length][original[0].length];
for (int i = 0; i < original.length; i++) {
System.arraycopy(original[i], 0, copy[i], 0, original[i].length);
}
💡 행과 열의 크기 모두 지정을 해야 사용가능
2. Arrays.copyOf 사용
import java.util.Arrays;
int[][] original = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] copy = new int[original.length][];
for (int i = 0; i < original.length; i++) {
copy[i] = Arrays.copyOf(original[i], original[i].length);
}
=
💡 행의 크기만 지정해도 사용가능
3. clone 메소드 사용
int[][] original = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] copy = original.clone();
for (int i = 0; i < original.length; i++) {
copy[i] = original[i].clone();
}
4. for 루프 사용
int[][] original = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] copy = new int[original.length][original[0].length];
for (int i = 0; i < original.length; i++) {
for (int j = 0; j < original[i].length; j++) {
copy[i][j] = original[i][j];
}
}
5. Arrays.copyOfRange 사용
import java.util.Arrays;
int[][] original = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] copy = new int[original.length][];
for (int i = 0; i < original.length; i++) {
copy[i] = Arrays.copyOfRange(original[i], 0, original[i].length);
}
배열 출력
1차원 배열
Arrays.toString() 사용
import java.util.Arrays;
int[] array = {1, 2, 3};
System.out.println(Arrays.toString(array));
2차원 배열
Arrays.deepToString 사용
import java.util.Arrays;
int[][] array = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(Arrays.deepToString(array));
'Java' 카테고리의 다른 글
[Java] HashMap - value값을 기준으로 정렬 (0) | 2024.07.23 |
---|---|
[Java] HashSet - 객체의 속성으로 중복 체크 (0) | 2024.06.21 |
[Java] 배열 정렬하기 (0) | 2024.06.16 |
[Java] String vs StringBuilder, 코딩테스트에서 StringBuilder를 쓰는 이유 (0) | 2024.04.23 |
[Java] 이뮤터블 객체와 뮤터블 객체 (0) | 2024.04.23 |