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