티스토리 뷰




얕은 복사 ? 


ArrayList 를 ArrayList 에 그냥 대입하는 것을 얕은 복사라 한다.

아래를 보자.


ArrayList<String> arrStr1 = new ArrayList<>();


arrStr1.add("1");

arrStr1.add("2");


ArrayList<String> arrStr2 = new ArrayList<>();


arrStr2 = arrStr1;


arrStr2.remove(1);


위 소스를 보면 1번 arr에 "1", "2" 를 추가한 후,

2번 arr에 단순 대입한 후,

2번 arr에서 "2"를 지워본 것이다.


결과를 출력해보면 알겠지만, 1번 arr 의 "2"도 삭제되어있을것이다.


결국, 단순 대입은 서로가 연결되어있다는 뜻.




해결책은?


깊은 복사. 로 해결한다.






깊은 복사?


아래 소스를 보면 된디ㅏ.


ArrayList<String> arrStr1 = new ArrayList<>();


arrStr1.add("1");

arrStr1.add("2");


ArrayList<String> arrStr2 = new ArrayList<>();


arrStr2.addAll(arrStr1);


arrStr2.remove(1);


얕은 복사와의 차이점은 단순대입이 아니라, 

ArrayList에서 제공하는addAll 함수를 이용한 것이다.


2번 arr에서  "2"를 삭제해도,

1번 arr에는 영ㅇ향을 미치지 않는다.




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함