Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Nova lista para remover

Olá, pessoal!

Tentei fazer de outra maneira, criando uma lista que guardaria os objetos a remover, fazendo a remoção após a iteração:

   private static List<Empresa> removidos = new ArrayList<Empresa>();

    public void removeEmpresa(Integer id) {
        for (Empresa empresa : lista) {
            if (empresa.getId() == id) {
                removidos.add(empresa);
            }
        }
        lista.removeAll(removidos);
    }

Queria saber se isso seria má prática ou algo assim.

2 respostas
solução!

Oi Giovani

Ficou um pouco estranho ter de criar uma List nova para depois remove-la, talvez faria sentido se desse para receber uma lista de IDs no método removeEmpresa, mas como é apenas um faz mais sentido fazer

public void removeEmpresa(Integer id) { 
    for (Empresa empresa: lista) { 
        if(empresa.getId() == id ) {
            lista.remove(empresa);
        }
    }
} 

Oi, Otavio.

Então, acontece que dessa maneira, recebemos a exceção ConcurrentModificationException, então o Nico utilizou Iterator para solucionar.

Mas concordo que o meu jeito faria mais sentido se fosse receber uma lista, mesmo. Vou manter a solução da aula.

Valeu!