Hallo,
folgender Code liefert eine Concurrent Modification Exception:
Iterator<Object> listIterator = list.iterator();
while(listIterator.hasNext()) {
Object listElem = listIterator.next();
if(listElem instanceof Blah) {
listIterator.remove();
list.add(mapBlah));
}
}
Also insbesondere das add scheint da ja nicht zu funktionieren. Wie kann ich das beheben und was ist der Sinn dieser Concurrent Exception, d.h. warum kann ich nicht direkt auf der Liste remove aufrufen und muss das z.B. über den Iterator machen?
Hinsichtlich der Exception hab ich auch folgenden Text gefunden:
"Wenn man einen Iterator für eine Collection anfordert, darf die Collection, solange man mit
diesem Iterator arbeitet, nicht verändert werden, weil der Iterator sonst in undefinierte
Zustände geraten kann."
Was ist hier unter einem undefiniertem Zustand zu verstehen? Kann mir das jemand gleich mit erklären?
folgender Code liefert eine Concurrent Modification Exception:
Iterator<Object> listIterator = list.iterator();
while(listIterator.hasNext()) {
Object listElem = listIterator.next();
if(listElem instanceof Blah) {
listIterator.remove();
list.add(mapBlah));
}
}
Also insbesondere das add scheint da ja nicht zu funktionieren. Wie kann ich das beheben und was ist der Sinn dieser Concurrent Exception, d.h. warum kann ich nicht direkt auf der Liste remove aufrufen und muss das z.B. über den Iterator machen?
Hinsichtlich der Exception hab ich auch folgenden Text gefunden:
"Wenn man einen Iterator für eine Collection anfordert, darf die Collection, solange man mit
diesem Iterator arbeitet, nicht verändert werden, weil der Iterator sonst in undefinierte
Zustände geraten kann."
Was ist hier unter einem undefiniertem Zustand zu verstehen? Kann mir das jemand gleich mit erklären?
Zuletzt bearbeitet: