Exception in thread "main" java.util.ConcurrentModificationException at java.util.LinkedList$ListItr.checkForComodification(Unknown Source) at java.util.LinkedList$ListItr.next(Unknown Source) at TestandoIterator.main(TestandoIterator.java:20)
Exception in thread "main" java.util.ConcurrentModificationException at java.util.LinkedList$ListItr.checkForComodification(Unknown Source) at java.util.LinkedList$ListItr.next(Unknown Source) at TestandoIterator.main(TestandoIterator.java:20)
Olá REGINA MEGUMI, poderia por favor passa a classe que lança a Exception (TestandoIterator.java)!
public class TestandoIterator {
public static void main(String[] args) {
List<String> letras = new LinkedList<>();
Iterator<String> it = letras.iterator();
letras.add("A");
letras.add("B");
letras.add("C");
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
Olá Regina.
Se ainda estiver enfrentando esse problema, faça a declaração do Iterator somente após a chamada dos métodos "add()" em "letras".
Segue artigo que explica o motivo da ocorrência dessa Exception: http://blog.caelum.com.br/concurrentmodificationexception-e-os-fail-fast-iterators/
Segue abaixo código modificado:
public class TestandoIterator {
public static void main(String[] args) {
List<String> letras = new LinkedList<>();
letras.add("A");
letras.add("B");
letras.add("C");
Iterator<String> it = letras.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
Se você "pega" o iterator da lista com ela vazia o iterator não tem nenhum item logo não é possível pegar elementos, como foi falado no vídeo caso você já tenha percorrido todos os itens da lista, é necessário criar um novo iterator pois o mesmo já percorreu todos os itens da lista. No seu caso o Iterator está sendo criado com a lista vazia logo o mesmo só reconhece a lista como vazia, se criar ele depois de add os itens ele irá ver quais itens foram add. Faça o teste : Crie um Iterator após add 3 itens na lista, após percorrer a lista imprimindo os itens, add mais itens e veja que se usar o mesmo iterator ele irá apontar o mesmo erro, pois aquele iterador só encherga os itens existentes de quando ele foi criado.