Avatar ·

Eliminación de objetos de una colección en un bucle sin ConcurrentModificationException

¡Hola a todos! Estoy escribiendo una pequeña aplicación en Java para gestionar una lista de tareas. Tengo un ArrayList, donde Task es un simple POJO con un campo boolean isCompleted. Necesito eliminar de la lista todas las tareas completadas. Escribí este código: ```java List tasks = new ArrayList<>(); // ... agregamos tareas ... for (Task task : tasks) { if (task.isCompleted()) { tasks.remove(task); } } ``` Pero al ejecutarlo obtengo una `ConcurrentModificationException`. He leído que esto está relacionado con la modificación de la colección durante la iteración, pero no entiendo cómo hacerlo correctamente. Probé usar un for normal con índice — a veces funciona, a veces lanza IndexOutOfBoundsException, porque después de eliminar los índices se desplazan. Por favor, indíquenme cómo eliminar elementos de una colección en un bucle correctamente. ¿Necesito usar algún iterador especial o hay formas más modernas en Java 8+? ¡Gracias de antemano! <<>>

Formas correctas de eliminar elementos