黑马程序员技术交流社区
标题: 如何边遍历边移除Collection中的元素 [打印本页]
作者: zhao543 时间: 2017-3-7 19:37
标题: 如何边遍历边移除Collection中的元素
边遍历边修改Collection的唯一正确方式是使用Iterator.remove()方法,如下:
| Iterator<Integer> it = list.iterator();
while(it.hasNext()){
// do something
it.remove();
}
|
一种最常见的错误代码如下:
| for(Integer i : list){
list.remove(i)
}
|
运行以上错误代码会报ConcurrentModificationException异常。这是因为当使用foreach(for(Integer i : list))语句时,会自动生成一个iterator来遍历该list,但同时该list正在被Iterator.remove()修改。在Java中,一般不允许一个线程在遍历collection时另一个线程在修改它。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |