728x90
반응형
SMALL
2차원 배열의 깊은 복사
얕은 복사
boolean[][] real = new boolean[1][1];
boolean[][] fake = real;
fake[1][1] = true;
System.out.println(real[1][1]); // true
잘못된 깊은 복사
boolean[][] real = new boolean[1][1];
boolean[][] fake = real.clone;
fake[1][1] = true;
System.out.println(real[1][1]); // true
깊은 복사가 제대로 되지 않는다.
제대로 된 깊은 복사
boolean[][] real = new boolean[1][1];
boolean[][] fake = Arrays.stream(real).map(boolean[]::clone).toArray(boolean[][]::new);
// for(int i=0; i<fake.length; i++){
// System.arraycopy(real[i], 0, fake[i], 0, real[0].length);
// }
fake[0][0] = true;
System.out.println(real[0][0]); // false
2차원 배열의 경우 1차원 배열씩 복사해야 한다.
728x90
반응형
LIST