JD.CONCUR
当为集合 A 创建迭代器,然后从该集合中移除某些元素,但循环没有停止时,出现 JD.CONCUR。有关详情,请参考 ConcurrentModificationException
漏洞与风险
在接下来调用“next”方法时,代码会引发 ConcurrentModificationException。
缓解与预防
不能修改正在迭代的对象。必须将要移除的元素存储在其他集合中,稍后将其移除,也可以克隆集合,并在克隆的版本上使用迭代器。
示例 1
复制
void fixList(Collection col) {
for (Iterator iter = col.iterator(); iter.hasNext();) {
String el = (String) iter.next();
if (el.startsWith("/")) {
col.remove(el);
}
}
}
针对第 14 行报告 JD.CONCUR:可以通过方法“iter.next()”引发“ConcurrentModificationException”,并在“col”进行迭代。在一个集合上进行迭代时,不能移除该集合中的元素。