黑马程序员技术交流社区
标题:
增强for循环问题
[打印本页]
作者:
AliWanGX
时间:
2016-9-7 19:01
标题:
增强for循环问题
用增强for循环遍历list集合的时候。没办法使用remove去删除集合中的元素。
会出现并发异常。为什么会这样。原理是什么
作者:
xh_javaee
时间:
2016-9-7 19:50
使用迭代器(iterator)删除
作者:
情天
时间:
2016-9-7 20:29
增强for的底层是用普通迭代器(Iterator)实现的,所以修改集合时会出现并发修改异常,可以边遍历边修改的迭代器是ListIterator!
作者:
32282722
时间:
2016-9-7 21:35
增强for循环底层是迭代器,iterator,所以不能在循环中删除元素,你可以看一下迭代器的部分
作者:
小菜白白白
时间:
2016-9-7 21:46
删除掉元素后,该元素后的元素得前移,整个下标就变了
作者:
HARRY_yFd0S
时间:
2016-9-7 21:58
因为增强for底层是用迭代器遍历的。如果你用remove删除的话,迭代器会检测到,并主动抛出异常。你可以去看看迭代器的原码。
作者:
SunCowbee
时间:
2016-9-7 22:21
会出现并发修改异常,得用List集合特有的Listiterator迭代器
作者:
changfa
时间:
2016-9-7 22:25
增强for循环底层是迭代器,iterator,所以不能在循环中删除元素 可以使用 ListIterator
作者:
不灬语
时间:
2016-9-7 22:43
增强for循环
作者:
shutdown
时间:
2016-9-7 23:09
remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。若要真正移除,需要搭配使用erase()。
作者:
哦啊啊
时间:
2016-9-7 23:18
好吧 楼上已经说得很清楚了
作者:
爱吃柠檬
时间:
2016-9-7 23:33
增强for循环依赖的是Iteretor迭代器,而我们在使用迭代器遍历集合的时候同时使用集合的remove方法,就会发生conCurrentModificationException就是并发修改异常,相当于你在搬东西的时候,有给你中途加量,你肯定不愿意,所以同理JVM会报这个异常,你可以通过迭代器的remove方法,别用集合的remove方法.
作者:
a953558401
时间:
2016-9-7 23:34
只能说增强for循环是不可以delete东西的
作者:
Toxicant
时间:
2016-9-8 01:17
增强for是基于Iterator的,如果使用增强for就表示引用了迭代器,在数据的读取过程中使用集合的remove方法就会造成并发修改异常,就是所谓的,你集合改变了,但是我迭代器中的东西没有改变,你删除某一组数据的时候,我的next的index正好就在这个位置,这样搞的迭代器失去了next的index,不能再继续next.所以就会出错,你可以使用迭代器自己的remove方法
作者:
流空有痕
时间:
2016-9-8 02:07
增强for的底层是用普通迭代器(Iterator)实现的,所以修改集合时会出现并发修改异常,可以边遍历边修改的迭代器是ListIterator!
作者:
maxjack
时间:
2016-9-8 10:02
底层是用普通迭代器(Iterator)实现
作者:
370452158
时间:
2016-9-8 11:27
增强FOR循环不能直接删除元素,要用普通FOR循环或者迭代器迭代才可以
作者:
itcoder
时间:
2016-9-8 12:48
顶顶顶顶顶顶顶顶顶顶顶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2