迭代时出现ConcurrentModification异常

时间:2015-04-24 03:38:42

标签: java performance loops exception concurrency

我已经研究过处理类似问题的其他问题,但似乎这个特例非常独特。

下面的代码应该通过一个事件列表,如果时间重叠,就把它们放在地图中。

// identify events that occur at the same time
List<Event> remainingEvents = new LinkedList<>();
remainingEvents = Event.getAllEvents();

for (Event event1 : Event.getAllEvents()) {
    for (Event event2 : remainingEvents) {

        // check if it is the same event
        if (event1 == event2)
            continue;

        // check whether they overlap
        if (event1.overlapsWith(event2)) {
            simultEvents.put(event1, event2);
        }
    }

    // event1 is now exhausted
    remainingEvents.remove(event1);
}

请注意,我在迭代完成后修改remainingEvents列表,而不是在迭代期间。因此,我不明白为什么我得到 ConccurentModificationException

Elipse还告诉我错误发生在这一行:

 for (Event event1 : Event.getAllEvents()) {

这是没有意义的,因为我没有修改任何与之相关的内容。

请注意,这不是重复,因为我没有修改列表,直到我完成迭代(与其他问题不同),并且错误发生在与删除无关的行上

0 个答案:

没有答案