遍歷List集合刪除元素的出現報錯


遍歷List集合刪除元素的出現報錯

 

遍歷List集合刪除元素的時候會發生索引越界異常或內容遍歷不全等問題。

例子:

List<String> al = new ArrayList<String>();

   al.add("12");

   al.add("1");

   al.add("13");  

   int size = al.size();

 

 

 

問題1:索引越界異常Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

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

    if("1".equals(al.get(i)))

     al.remove(i);

   }

問題分析:滿足條件后刪除一個元素,集合只有兩個元素,只能al.get(0),al.get(1),而al.get(2)獲取元素時索引越界了。有同學可能想把上面的size個數改成al.size()就行了,雖然解決了索引越界問題,但出現了遍歷不全問題。

 

 

問題2:內容遍歷不完全

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

    if("1".equals(al.get(i)))

     al.remove(i);

   }

問題分析:滿足條件后刪除一個元素,不再循環第三個元素

 

 

正確的代碼:

Iterator<String> it = al.iterator();

   while(it.hasNext()){

    if("1".equals(it.next()))

     it.remove();

   }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM