java中使用for循环删除List集合的陷阱


一直以为是数据库的数据取错了,导致后面for循环出错。慢慢调试之后,发现这原来是一个坑。回到正题

 

(错误示范:使用for循环删除list集合)

    for(int i=0;i<list.size();i++) {
        if(list.get(i)!=0) {
            list.remove(i);
        }
    }

错误的原因是每删除list集合的一个元素,list的大小都在发生改变,从而导致索引也在发生改变,从而删除的时候会漏过一些元素。 

 

(正确示范:使用迭代器删除list集合)

    Iterator<Integer> it=list.iterator();
    while(it.hasNext()) {
        Integer m=it.next();
        if(m!=0) {
            it.remove();
        }
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM