xiaoasha 2010-11-02 10:15
浏览 292
已采纳

java.util.ConcurrentModificationException 已经百度过,折腾很久还是没想出来!!

[size=medium][color=darkred]代码很简单 ,其实就是想测试一下iterator 的用法,而且我在用iterator遍历的时候也没有修改原来集合中的内容。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestList {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<String> l = new ArrayList<String>();
    Iterator it = l.iterator();
    String s = "abc";       

    for(int i=0;i<10;i++){
        s+=i;           
        l.add( s);          
    }
    System.out.println(l);      

    while(it.hasNext()){
        System.out.println("aa");           
        it.next();
    }   

}

}[/color][/size]

运行结果:
[color=red]Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at TestList.main(TestList.java:34)[/color]

[abc0, abc01, abc012, abc0123, abc01234, abc012345, abc0123456, abc01234567, abc012345678, abc0123456789]
aa

  • 写回答

3条回答 默认 最新

  • limengchengg 2010-11-02 10:32
    关注

    补充之前的回答:
    原因说明:
    javadoc中写到:
    如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的集合,则迭代器的行为是不明确的。

    你的代码中 用for循环修改了迭代器所指向的集合
    所以迭代器的行为是不明确的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案