Mit dem folgenden Code wird in einer Folge java.util.ConcurrentModificationException
java.util.ConcurrentModificationException - Wie lösche ich einen Iterator
final AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long timestamp) {
for (ListIterator<myCircle> List = CircleList.listIterator(); List.hasNext();) {
myCirle check = List.next();
if (CheckCollisionFunction(check) == true) {
this.stop();
CircleList.clear();
gameOverFunction();
}
}
}
}
So im ein Iterator zu überprüfen, ob jede meiner Kreise mit meinem Player Kreis kollidieren .
Wenn ich die Liste zu löschen:
CircleList.clear();
Ich bekomme die Ausnahme.
java.util.ConcurrentModificationException
In diesem Fall löschen Sie manchmal außerhalb eines Iterators, wenn Sie einen Iterator verwenden. Kann mir bitte jemand zeigen, wie man alles in meiner Liste mit dem Iterator löscht?
Oder eine andere Möglichkeit, diesen Fehler zu stoppen.
Dies ist meine Liste.
private final ObservableList<myCircle> CircleList = FXCollections.observableArrayList();
Woher rufen Sie clear() ab? Es gibt keinen Grund, Elemente einzeln über den Iterator zu entfernen. Sie müssen nur clear() aufrufen, nachdem Sie mit der Iteration über die Liste fertig sind. – Eran
final AnimationTimer timer = neuer AnimationTimer() { @Override public void handle (langer Zeitstempel) {Alles ist in diesem Timer, aber ich benutze auch this.stop(); um den Animationstimer anzuhalten. – Dynermite
Löschen Sie die Liste von einem anderen Thread als dem, der über die Liste iteriert? Das würde die Ausnahme erklären. – Eran