本帖最后由 黄奕豪 于 2012-5-25 11:11 编辑
不多说,看代码,为什么同样是定义一个Iterator的实现子类,放在不一样的位置编译就失败呢?
之前因为未看后面视频才问出此问题,在此自问自答一下吧:因为迭代器迭代过程也有增删改查的动作,集合对象本身也有增删改查的动作,两个动作不能并发执行,就像相同的货,我刚接上级报告说要去仓库取那么多货,你先我之前就把货取走了,闹矛盾了~~具体闹矛盾过程可参照下楼理解,下楼兄弟给出了源码~得了~!~谢谢各位~~~- import java.util.*;
- class ArrayListDemo
- {
- public static void main(String[] args)
- {
- ArrayList sl = new ArrayList();
- Iterator it = sl.iterator();//放这里编译能过,但是运行时就抛出错误:Exception in thread "main" java.util.ConcurrentModificationException
-
- sl.add("12");
- sl.add("34");
- sl.add("56");
- sl.add("78");
- //Iterator it = sl.iterator();//放这里可以
- sop(it.next());
- sop(sl);
-
- }
- public static void sop(Object str)//简化输出代码
- {
- System.out.println(str);
- }
- }
复制代码 |
|