본문으로 바로가기

2차원 배열의 깊은 복사

category Language자바 3개월 전
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