带有迭代器的java.util.ConcurrentModificationException

user2219247:

我知道如果要尝试通过简单循环将其从集合循环中删除,我将收到此异常:java.util.ConcurrentModificationException但是我正在使用Iterator,它仍然会产生此异常。知道为什么以及如何解决吗?

HashSet<TableRecord> tableRecords = new HashSet<>();

...

    for (Iterator<TableRecord> iterator = tableRecords.iterator(); iterator.hasNext(); ) {
        TableRecord record = iterator.next();
        if (record.getDependency() == null) {
            for (Iterator<TableRecord> dependencyIt = tableRecords.iterator(); dependencyIt.hasNext(); ) {
                TableRecord dependency = dependencyIt.next(); //Here is the line which throws this exception
                if (dependency.getDependency() != null && dependency.getDependency().getId().equals(record.getId())) {
                    tableRecords.remove(record);
                }
            }
        }
    }
Arnaud Denoyelle:

您必须使用iterator.remove()而不是tableRecords.remove()

仅当您使用迭代器中的remove方法时,才能删除列表中要迭代的项目。

编辑:

创建迭代器时,它将开始计算对集合应用的修改。如果迭代器检测到在不使用其方法(或在同一collection上使用另一个迭代器)的情况下进行了某些修改,则它无法再保证它不会在同一元素上传递两次或跳过一个元素,因此将引发此异常

这意味着您需要更改代码,以便仅通过iterator.remove(并且只有一个迭代器)删除项目

要么

列出要删除的项目,然后在完成迭代后将其删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JAVA java.util.ConcurrentModificationException

抛出java.util.ConcurrentModificationException

java.util.ConcurrentModificationException流

java.util.ConcurrentModificationException-ArrayList

java.util.ConcurrentModificationException:空

卡在“ java.util.ConcurrentModificationException”

java.util.ConcurrentModificationException问题

java.util.ConcurrentModificationException出现

带有自定义ArrayList的java.util.ConcurrentModificationException

Java编程错误:java.util.ConcurrentModificationException

代号一:了解java.util.ConcurrentModificationException

java.util.ConcurrentModificationException由于无意修改

java.util.ConcurrentModificationException在活动的onCreate

java.util.ConcurrentModificationException Pentaho数据集成

CollectionOfElements上的java.util.ConcurrentModificationException

java.util.ConcurrentModificationException和SharedPreference

Groovy中的java.util.ConcurrentModificationException

java.util.ConcurrentModificationException for循环中的错误

JUnit测试中的java.util.ConcurrentModificationException

如何避免java.util.ConcurrentModificationException

不清楚java.util.ConcurrentModificationException

TreeMap中的java.util.ConcurrentModificationException

即使使用迭代器从arraylist中删除元素时,java.util.ConcurrentModificationException

如何在HashMap上使用双重迭代器修复'java.util.ConcurrentModificationException'

java.util.ConcurrentModificationException但我没有删除

forEach周期中的java8 java.util.ConcurrentModificationException

修改列表时出现java.util.ConcurrentModificationException

保存android偏好设置时出现java.util.ConcurrentModificationException

javafx时间轴中的java.util.ConcurrentModificationException