1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Exception ao remover um objeto de uma lista durante a iteração

Parte do meu código:

public List filtra(List contas) { 
Calendar dataAtual = Calendar.getInstance();
Iterator iterator = contas.iterator(); 
while (iterator.hasNext()) {
 Conta c2 = iterator.next(); 
 if (c2.getDataCriacao().get(Calendar.MONTH) == dataAtual .get(Calendar.MONTH) && c2.getDataCriacao().get(Calendar.YEAR) == dataAtual .get(Calendar.YEAR)) 
     contas.remove(c2);
}
return (filtro == null ? contas : filtro.filtra(contas)); }

A lógica é pegar as contas que foram criadas neste mês remove-las da minha lista. O problema é que eu recebo a exception java.util.ConcurrentModificationException na linha Conta c2 = iterator.next(); Sei que tem algo a ver com eu estar modificando uma lista durante a iteração. Mas não sei bem o motivo disto. O meu algoritmo tem por objetivo receber uma lista de contas, remover as contas que foram criadas este mes e passar esta lista para outro objeto. (outro filtro no caso).

Alguem pode ajudar?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

4 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java collections ou faça a sua própria pergunta.