我已经研究过处理类似问题的其他问题,但似乎这个特例非常独特。
下面的代码应该通过一个事件列表,如果时间重叠,就把它们放在地图中。
// 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()) {
这是没有意义的,因为我没有修改任何与之相关的内容。
请注意,这不是重复,因为我没有修改列表,直到我完成迭代(与其他问题不同),并且错误发生在与删除无关的行上