Remoção de objetos de uma coleção em loop sem ConcurrentModificationException
Olá a todos! Estou escrevendo um pequeno aplicativo em Java para gerenciar uma lista de tarefas. Tenho um ArrayList, onde Task é um POJO simples com um campo boolean isCompleted. Preciso remover da lista todas as tarefas concluídas. Escrevi o seguinte código:
```java
List tasks = new ArrayList<>();
// ... adicionando tarefas ...
for (Task task : tasks) {
if (task.isCompleted()) {
tasks.remove(task);
}
}
```
Mas ao executar, recebo `ConcurrentModificationException`. Li que isso está relacionado à modificação da coleção durante a iteração, mas não entendo como fazer isso corretamente. Tentei usar um for comum com índice — às vezes funciona, às vezes lança IndexOutOfBoundsException, porque após a remoção os índices são deslocados. Por favor, me digam como remover elementos de uma coleção em um loop corretamente? Preciso usar algum iterator especial ou existem formas mais modernas em Java 8+? Desde já, obrigado!
<<>>