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
반응형

+ Recent posts