黑马程序员技术交流社区
标题:
使用迭代器读取集合元素
[打印本页]
作者:
yninggis
时间:
2014-11-23 20:31
标题:
使用迭代器读取集合元素
飞哥,有个地方不太理解,请帮忙解释下:
毕向东_java基础视频教程第14天-05-集合框架(ListIterator)中有下面这个知识点:
利用迭代器读取元素时,迭代过程中,使用集合引用添加或删除元素会出现异常,视频中的解释是:“利用集合引用添加元素,迭代器不知道,所以出现异常。”
这个解释我还是不太明白,能不能更详细解释一下,为什么用集合引用添加元素,之前的迭代器就识别不了了?迭代器只要往下读取集合元素不就行了么?异常代码如下:
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
Iterator it = al.iterator();
while (it.hasNext())
{
Object obj = it.next();
if(obj.equals("java02")) //当迭代器读取到“java02”时,给集合添加“java03”
al.add("java03");
}
作者:
王世虎
时间:
2014-11-23 21:09
迭代器操作集合的时候不能使用集合的引用来操作集合,两个不同的对象操作同一个数据,会抛出异常。
作者:
a8851625
时间:
2014-11-23 21:50
在用迭代器或者高级for循环的时候都不出添加或删除的,当你在做这样的操作的时候集合的范围都在改变了。可以用ListIterator,这个可以添加删除
作者:
FlyFish
时间:
2014-11-25 10:02
本帖最后由 FlyFish 于 2014-11-25 10:06 编辑
迭代器对象和集合对象共同操作集合中的元素,视为两个对象同时操作数据,会产生安全问题。ListIterator具备(Iterator+集合的增和改功能)增删改查功能,只用此列表迭代器操作元素时,仅仅是一个对象对集合操作,安全问题就不存在了。ListIterator为List体系特有。
作者:
zhangyangLengen
时间:
2014-11-25 21:39
这个需要看看底层的代码,利用了角标cursor 和 size() 判断关系,外部类中的 modCount 与 内部类中的modCountException关系
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2