1
resposta

Erro de execução

Nessa aula após a adição do implements em Titulo ocorreu esse erro. O que pode ser ?

Exception in thread "main" java.util.ConcurrentModificationException at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1095) at java.base/java.util.ArrayList$Itr.next(ArrayList.java:1049) at br.com.alura.screenmatch.principal.PrincipalListas.main(PrincipalListas.java:27)

1 resposta

Olá Herberth, como vai?

Parece que o erro ocorreu após a adição do implements na classe Titulo. Para resolver esse problema, você deve garantir que não esteja modificando a lista (ou qualquer outra coleção) enquanto a está percorrendo.

Existem algumas abordagens comuns para evitar esse erro:

  1. Usar um Iterator para a iteração e modificar a lista usando o Iterator:
Iterator<Titulo> iterator = listaTitulos.iterator();
while (iterator.hasNext()) {
    Titulo titulo = iterator.next();
    if (algumaCondicao) {
        iterator.remove(); // Remove o elemento usando o Iterator
    }
}
  1. Criar uma cópia da lista antes de fazer modificações:
List<Titulo> copiaLista = new ArrayList<>(listaTitulos);
for (Titulo titulo : copiaLista) {
    if (algumaCondicao) {
        listaTitulos.remove(titulo);
    }
}
  1. Usar estruturas de dados thread-safe, como CopyOnWriteArrayList, se você estiver trabalhando em um ambiente concorrente.

Certifique-se de revisar o código onde a modificação da lista ocorre após a adição do implements na classe Titulo e aplicar uma das soluções acima para evitar a ConcurrentModificationException.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!