Avatar ·

Löschen von Objekten aus einer Collection in einer Schleife ohne ConcurrentModificationException

Hallo zusammen! Ich schreibe eine kleine Java-Anwendung zur Verwaltung einer Aufgabenliste. Ich habe ein ArrayList, wobei Task ein einfaches POJO mit einem boolean-Feld isCompleted ist. Ich muss alle erledigten Aufgaben aus der Liste löschen. Ich habe folgenden Code geschrieben: ```java List tasks = new ArrayList<>(); // ... Aufgaben hinzufügen ... for (Task task : tasks) { if (task.isCompleted()) { tasks.remove(task); } } ``` Aber beim Ausführen erhalte ich eine `ConcurrentModificationException`. Ich habe gelesen, dass dies mit der Modifikation der Collection während der Iteration zusammenhängt, verstehe aber nicht, wie ich es richtig machen soll. Ich habe es mit einer normalen for-Schleife mit Index versucht – manchmal funktioniert es, manchmal wirft es eine IndexOutOfBoundsException, weil sich die Indizes nach dem Löschen verschieben. Könnt ihr mir bitte sagen, wie man Elemente aus einer Collection in einer Schleife richtig löscht? Muss ich einen speziellen Iterator verwenden oder gibt es modernere Wege in Java 8+? Vielen Dank im Voraus! <<>>

Richtige Wege zum Löschen von Elementen