- ArrayList al=new ArrayList();
- al.add(0,"java01");
- al.add(1,"java02");
- al.add("java03");
- ListIterator lit=al.listIterator();
- while(lit.hasNext())
- {
- Object obj=lit.next();
- if(obj.equals("java02"))
- {
- al.add("java09"); //编译错误
- al.remove("java02"); //编译正确
- }
- }
- sop(al);
复制代码
今天听毕向东老师讲集合框架,在迭代时,不可以通过集合对象的方法操作集合中的元素,会出现并发问题,因为会发生ConcurrentModifyicationException异常,在Iterator接口中只有hasNext(),next(),remove()三个方法。
但是为什么在迭代时可以使用集合对象的remove()方法操作集合元素呢,另外Iterator的子接口ListIteartor迭代时,也可以使用集合对象的remove()方法操作集合元素,不能使用其他方法ruadd(),set()操作集合元素。
我感觉是因为在Iterator接口中只有一个remove()方法的原因,可是不太懂的其中的原理,请大家帮我解答一下,谢谢。 |
|