A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

边遍历边修改Collection的唯一正确方式是使用Iterator.remove()方法,如下:
1

2

3

4

5

Iterator<Integer> it = list.iterator();
while(it.hasNext()){
    // do something
    it.remove();
}



一种最常见的错误代码如下:
1

2

3

for(Integer i : list){
    list.remove(i)
}



运行以上错误代码会报ConcurrentModificationException异常。这是因为当使用foreach(for(Integer i : list))语句时,会自动生成一个iterator来遍历该list,但同时该list正在被Iterator.remove()修改。在Java中,一般不允许一个线程在遍历collection时另一个线程在修改它。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马