'자바 레퍼런스'에 해당되는 글 1건

  1. 2014.12.15 ArrayList 요소 모두 제거
Android 안드로이드2014. 12. 15. 18:10

ArrayList 사용하는 중 황당한 결과를 맞이했다.


사건은 이렇다. 어제 저녁 더 정확히는 오늘 아침 아니 오늘 이른 새벽 2시경 원하는 부분을 얼쭈 썼다. 이어서 테스트를 하는 데 받아들일 수 없는 결과가 나왔다.ArrayList 부분에 문제가 있는 것 같았다. 더 확인하니 ArrayList 요소를 모두 지우라고 했는데 꼭 하나가 남았다. 



마지막 추가한 element였다.



for(int i=0; i<mArrayListCn.size(); i++) {

mArrayListCn.remove(i);

}

코드는 위와 같다. 


내 의도는 mArrayListCn이 가진 모든 값을 남김 없이 삭~*

마지막에 넣은 값이 귀신처럼 나타나서 의도하지 않은 결과를 보냈다.


그리고 막 디버그 과정을 거치고 로그를 써가며 찾아냈다. 


이제 즐거운 마듬으로 원인과 결과를 한 번 둘러보고자 한다.


이를 해결하려고 관련 코드 모두를 검토하고 디버그할 때 변수 값들에 들어가고 나가는 동향을 살폈다. 아침 일어나서 부터 했다. 순수하게 해결하는데 들어간 시간이 6시간이 걸렸다. 더 재미난 점은 RemoveAll() 매서드는 보였는데 Clear() 함수를 발견할 수 없었다. RemoveAll하라는데 인자가 필요한지에 대해서 시간이 필요했다. 그래서 위와같은 코드를 만들었는데 작동하지 않은 것이었다.


그보다 가장 중요한 점은 자바 레퍼런스(안드로이드 reference)에서 ArrayList 제너릭이 가진 메서드 목록을 쭉 확인했으나 당시에 Clear()은 눈에 띄지 않았다. 이것이 바로 시야에 잡혓더라면 이러한 시간을 다른 보다 생산적 일에 썼을 것이다.


의문은 위 코드로 ArrayList에 있는 값을 모두 제거할 수 없다는 점이다!


아직 이것 요소를 모두 삭제하는것을 해결했다고ㅠ끝난것은 아니고 연결해서 더 추가할 부분이 있다.


Posted by 코드버무려