1
resposta

Iterator vs ArrayList

No código abaixo, no it.remove() remove o item do Iterator. Como ele faz para remover o item do objeto lista?

public void removeEmpresa(Integer id) { 

    Iterator<Empresa> it = lista.iterator();

    while(it.hasNext()) { 
        Empresa emp = it.next();

        if(emp.getId() == id ) {
            it.remove();
        }
    }
}
1 resposta

Como exatamente o Iterator remove os elementos depende de sua implementação, que pode ser diferente para diferentes coleções. No caso do iterador do ArrayList ele remove o elemento usando o método público remove() do ArrayList e incrementa o contador de modificações da lista para que ConcurrentModificationException não seja lançado na próxima iteração.