如何邊遍歷集合邊刪除元素--使用Iterator中的remove()方法


在遍歷集合時,想將符合條件的某些元素刪除,開始是用了下面的方法

 

 
  1. public static void main(String[] args) throws UnsupportedEncodingException {  
  2.     List<String> list = new ArrayList<String>();  
  3.     list.add("abc");  
  4.     list.add("bbc");  
  5.     list.add("cbc");  
  6.     Iterator<String> it = list.iterator();  
  7.     while(it.hasNext()){  
  8.         String str = it.next();  
  9.         System.out.println(str);  
  10.         if(str.equals("abc")){  
  11.             list.remove(str);  
  12.         }  
  13.      }  
  14.     }  


結果報下面的異常

 

Exception in thread "main" Java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.util.AbstractList$Itr.next(Unknown Source)
    at junit.Test.main(Test.java:23)

查了下,原來java中的集合邊遍歷邊刪除是需要使用迭代器中的方法的,改為下面

 

  1. public static void main(String[] args) throws UnsupportedEncodingException {
    List<String> list = new ArrayList<String>();
    list.add("abc");
    list.add("bbc");
    list.add("cbc");
    Iterator<String> it = list.iterator();
    while(it.hasNext()){
    String str = it.next();
    System.out.println(str);
    if(str.equals("abc")){
    it.remove();
    }
    }

    System.out.println(list.size());
    }

問題解決


免責聲明!

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



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