Saltar al contenido

Iterator.remove () IllegalStateException

Solución:

No has llamado next() en tu Iterator, por lo que todavía no se refiere al primer elemento. No puede eliminar el elemento que aún no está especificado.

Llama next() para avanzar al primer elemento primero, luego llame remove().

La respuesta de @rgettman es correcta pero para darte imaginación.

Nuestra colección: | el1 | | el2 | | el3 |

cuando usted llama iterator.next() funciona de esta manera:

| el1 | iterador | el2 | | el3 |

por lo que salta sobre el elemento y devuelve la referencia al elemento que se saltó (| el1 |). Así que si llamamos iterator.remove() ahora, | el1 | sería eliminado.

Vale la pena agregar lo que @PedroBarros mencionó anteriormente: no puedes llamar iterator.remove() dos veces sin iterator.next() entre ellos porque IllegalStateException sería arrojado. Además, cuando crea dos iteradores (iterator1, iterator2) y luego llama:

iterator1.next();
iterator1.remove();
iterator2.next();

arrojará ConcurrentModificationException porque iterator2 comprueba que se modificó la colección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *