마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ArrayList 질문입니다@!!

0 추천
List<People> A= new ArrayList<>();

List<People> B= new ArrayList<>();

B에는 데이터가 들어 있고,

A에는 아무 데이터도 들어 있지 않습니다.

근데

1. A.addAll(B)         //List의 메소드 이용         

2. A=B                 //그냥 대입

왜 1번이랑 2번이랑 차이가 있는건가요?
라라랄라라라 (150 포인트) 님이 2017년 4월 28일 질문

2개의 답변

0 추천
 
채택된 답변
질문자님의 가방과 제 가방이 있습니다.

질문자님의 가방속에 제 가방속에 들어 있던 짐을 복제해서 쏟아 넣습니다.

일시적으로 제가 가진 짐을 질문자님이 똑같이 가지고 있게 되지만 이는 엄연히 앞으로는 질문자님의 짐이고 이 짐들이 어떻게 되던 이젠 더 이상 제 알바 아닙니다.

이게 1. A.addall(B) 입니다.

 

이와는 다르게 질문자님의 고급진 가방을 뺏어서 가까운 창문 밖으로 집어 던져버리고

제 쓰레기 가방을 질문자님에게 주면서 앞으로 제 가방을 질문자님의 가방처럼 사용해주세요. 아! 물론 저도 같이 사용할것이구요. 제것이 질문자님 것이고 질문자님것이 제것이 되는것이죠.

이것이 바로 A=B 입니다.
Development Guy (70,570 포인트) 님이 2017년 4월 28일 답변
라라랄라라라님이 2017년 4월 28일 채택됨
비유 정말 잘하시네요 ㅠㅠㅠ 고마워용ㅠㅠㅠㅠ ><
아이들 가르칠때도 이렇게 가르쳐요 ㅋ
0 추천
엄청난 차이가 있습니다.

A--> 1234 번지 B --> 5678  번지를 각각 가르친다고 할 때

1번은 1234 번지에 B의 데이터가 들어가는 거구

2번은 A가 1234번지를 가르키는게 아니라, B의 주소인 5678번지를 가르치게 됩니다.

 

따라서 1번은 B의 값을 수정해도 A에 들어간  데이터가 변경되지 않으나

2번은 B의 값을 수정하면 A에 들어간 데이터가 변경 됩니다.

 

예를 들어

A={ } , B={1,2}라는 데이터가 들어있다고 할 때,

말씀하신 식을 사용하면  둘 다 A={1,2} 가 되는건 동일하지만

B에 3이라는 숫자를 넣으면

1번의 경우 A={1,2} 와 같이 나오지만,

2번의 경우 A={1,2,3} 과 같이 됩니다.
익명사용자 님이 2017년 4월 28일 답변
감사합니다 ! 설명 이해되게 잘하시네요^^
...