zoukankan      html  css  js  c++  java
  • java foreach循环抛出异常java.util.ConcurrentModificationException

    代码如下:

    1. for (Iterator<String> iter = list.iterator(); iter.hasNext(); ) {  
    2.       
    3.     if (Integer.parseInt(iter.next()) % 3 == 0 ) {  
    4.           
    5.         list.remove(iter.next());  
    6.     }  
    7.       
    8.     System.out.println(list.size() + "");  
    9. }  


    这样,使用Iterator进行迭代的时候,如果同时移除其中的元素,会抛出 java.util.ConcurrentModificationException异常。我猜想是因为我使用Iterator进行迭代的同时,移除了 其中的对象,破坏了Iterator内部用来迭代的索引。所以抛出异常。


    当然,使用foreach的语法,进行循环,本身就是使用了Iterator进行迭代。所以也会出现同样的问题。

    代码如下:

    1. for ( String iter: list ) {  
    2.       
    3.     if (Integer.parseInt(iter) % 3 == 0 ) {  
    4.           
    5.         list.remove(iter);  
    6.     }  
    7.       
    8.     System.out.println(list.size() + "");  
    9. }  


    抛出的异常也是一样的。


    如果使用普通的for循环,自己设定索引i 进行循环,就不会出现此问题

    代码如下:

      1.     for (int i = 0; i < list.size(); i ++ ) {  
      2.               
      3.             String s = list.get(i);  
      4.               
      5.             System.out.println(list.size() + "");  
      6.               
      7.             if ( Integer.parseInt(s) % 3 == 0 ) {  
      8.                   
      9.                 list.remove(s);  
      10.             }  
      11.               
      12.               
      13.         } 
  • 相关阅读:
    DNS原理入门
    软件架构入门
    熵:宇宙的终极规则
    新鲜事
    加密货币的本质
    汇编语言入门教程
    HTML & CSS
    [模板] 矩阵快速幂
    [模板] 三分
    [模板] 2-SAT 问题
  • 原文地址:https://www.cnblogs.com/deepbreath/p/4447416.html
Copyright © 2011-2022 走看看