La forma correcta de eliminar elementos de una colección mientras se itera es mediante el método ListIterator.remove ().
P.ej
ListIterator iter = myList.iterator ();
while (iter.hasNext ()) {
itr.remove ();
}
- ¿Qué debo hacer si no puedo obtener el algoritmo correcto para un problema de codificación?
- ¿Cuál es la razón por la cual las compañías gigantes (por ejemplo, Google o Microsoft) hacen preguntas típicas como el árbol de búsqueda binario o el algoritmo tradicional o preguntas como la complejidad del algoritmo? ¿Cuál es el propósito? La mayoría de ellos no se usan en la vida real.
- ¿Cuáles son los algoritmos de clasificación considerados algoritmos codiciosos?
- ¿Cuál es más rápido: clasificación rápida o burbuja, y por qué?
- ¿Qué enfoque debería usarse para resolver esta pregunta sobre hackerrank?
Algunos desarrolladores usan el siguiente código para eliminar un elemento que es incorrecto:
Iterador iter = myList.iterator ();
while (iter.hasNext ()) {
itr.remove ();
}
Al hacerlo, obtenemos ConcurrentModificationException.
Primero se crea un iterador para recorrer la lista. Pero al mismo tiempo, la lista se cambia mediante el método remove ().
En Java, no está permitido que un hilo modifique una colección mientras otro hilo la itera. ListIterator proporciona la capacidad de eliminar un objeto durante el recorrido.
Referencia : 100 preguntas principales de la entrevista de colecciones de Java