728x90
반응형
알고는 있었지만 오늘 30분간 삽질하게 한 실수다.
1
2
3
4
5
6
7
|
for (int i=0; i< list.size(); i++) {
if(Utils.isNull(list.get(i).getOrginNm())) {
logger.info("index : "+i+" delete VO : " +list.get(i).toString());
list.remove(i);
}
else logger.info("index : "+i+" not delete VO : " + list.get(i).toString());
}
|
cs |
이걸 실행하면 원하는 결과를 얻을 수 없다.
원인은 list.remove(i) 를 하면서 하나가 삭제되면서 index가 달라지기 때문이다.
시작 시 list.size()가 10였는데 하나를 remove 하면 list.size()는 9이 될테니
1. 반복문의 실행 횟수가 의도하지 않게 변하게 되고
2. remove(i)에 사용되는 index 값에도 문제가 될 것이다.
또 실수할테지만.. 다음엔.. 삽질은 짧게 하자..
* 관련글
[java] ArrayList.remove(Integer index) 사용시 이상 : https://deonggi.tistory.com/152
728x90
반응형
'코딩 삽질' 카테고리의 다른 글
[android] checkbox 박스를 오른쪽으로 (0) | 2020.04.05 |
---|---|
[android] 뷰에 대한 높이 분배 (0) | 2020.04.02 |
[sql, oracle] 계정별 마지막 row (0) | 2020.02.28 |
[d3] Line chart sample (0) | 2020.02.07 |
[javascript, swiper] tab swiper 셈플소스 (0) | 2019.12.19 |