반응형
1차원배열
public class Test {
public static void main(String[] args){
int[] a = {1,2,3,4,5};
int[] b = a;
a[0] = 100;
for(int num: b){
System.out.println(num);
}
}
}
결과 : 100, 2, 3
int[] b = a.clone();
이렇게 바꾸면 결과가 1,2,3으로 나온다.
1차원 배열에서는 clone매소드를 사용하면 deep copy가 된다.
2차원배열
public class Test {
static int[][] map;
public static void main(String[] args){
map = new int[3][3];
for(int i=1; i<3; i++){
for(int j=1; j<3; j++){
map[i][j] = 1;
}
}
int[][] map2 = map.clone();
for(int i=1; i<3; i++){
for(int j=1; j<3; j++){
map2[i][j] = 2;
}
}
System.out.println("[Map1]");
print(map2);
System.out.println("[Map2]");
print(map);
}
static void print(int[][] map){
for(int i=1; i<3; i++){
for(int j=1; j<3; j++){
System.out.printf("%d ", map[i][j]);
}
System.out.println();
}
}
}
결과
[Map1]
2 2
2 2
[Map2]
2 2
2 2
2차원 이상 배열을 다룰 때 DeepCopy하려면
static int[][] deepCopy(int[][] map){
int[][] map2 = new int[N+1][N+1];
for(int i=1; i<=N; i++){
for(int j=1; j<=N; j++){
map2[i][j] = map[i][j];
}
}
return map2;
}
반응형
'알고리즘 > 이론과 문법' 카테고리의 다른 글
백트래킹 (0) | 2019.03.31 |
---|---|
Integer 객체 비교 (0) | 2019.03.23 |
정렬알고리즘 속도 (0) | 2019.03.21 |
Stable & Unstable Sort (안정정렬, 불안정정렬) (0) | 2019.03.21 |
Union & Find (0) | 2019.02.28 |