본문으로 바로가기

2차원 배열의 깊은 복사

category Language/자바 2025. 1. 14. 16:05
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

'Language > 자바' 카테고리의 다른 글

자바 진수변환 엄청 쉽게 하는 방법  (0) 2024.08.23
빅엔디안, 리틀엔디안이란?  (0) 2024.06.11
volatile 이란?  (0) 2024.06.09
HashMap과 Hashtable의 차이점  (0) 2023.10.02
JAVA의 WatchService에서 주의할점  (0) 2023.08.10