ConcurrentModificationException错误

时间:2013-12-02 20:54:29

标签: exception

有人可以帮我解决我的代码问题吗?错误是:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894)
    at java.util.HashMap$KeyIterator.next(HashMap.java:928)
    at javaTest.Main.main(Main.java:18)

代码是:

public static void main(String arg[]) {
    job.add("a");
    job.add("b");
    HashSet<String> klonasOnJob = job;
    for (String p : klonasOnJob) {
        if (p != "b") {

        } else {
            job.remove(p);
        }
}

1 个答案:

答案 0 :(得分:1)

如果在迭代集合时修改集合(在您的情况下通过删除元素),大多数集合将会中断并抛出ConcurrentModificationException。改为使用迭代器的remove()方法。

在您的情况下,相关片段将是:

Iterator<String> it = klonasOnJob.iterator();
while (it.hasNext()) {
    String p = it.next();
    if (p != "b") {

    } else {
        it.remove();
    }
}