Olá galera estou tento um problema em remover objeto. Estou fazendo um programa de cadastro de Pessoas e Contas. Dentro da classe Pessoa eu tenho um ArrayList de Contas.
Eu tenho uma classe chamada Pessoa e PessoaDAO, no caso, meu professor disse pra excluir primeiro as contas e depois a pessoa. Mas eu não estou conseguindo, quando crio uma conta para uma pessoa ela não exclui, nem a Pessoa nem a Conta. Algúem pode me ajudar?
Método de excluir em Pessoa:
public void excluirContas() {
contas.remove(getContas());
}
Método de excluir em PessoaDAO:
public void removerPessoa() {
System.out.println("Digite o CPF para buscar: ");
String busca = scan.nextLine();
for (Pessoa pessoa : list) {
if (pessoa.getCpf().equals(busca)) {
pessoa.excluirContas();
list.remove(pessoa);
System.out.println(list);
break;
} else {
System.out.println("\nCliente não Encontrado!");
}
}
}
Você não pode remover um elemento de um arrayList enquanto você esta iterando, para isso você tem que usar um iterator.
Você não disse se o for esta sendo chamado e nem se esta lançando uma exceção, mas supondo que esteja tudo correto, o código lançará uma exceção do tipo java.util.ConcurrentModificationException
Pelo seu código, deve ser uma implementação de List e nãio um array…
Por acaso o método getContas não retorna exatamente o objeto contas?
O método remove de um objeto do tipo List remove o objeto passado como parâmetro caso aquele objeto esteja armazenado dentro da coleção.
Não creio que seu List seja uma coleção de objetos List.
Sem ver como você implementou suas classes, fica difícil ajudar, mas creio que você queira fazer um
contas.clear(); // esvaziar a lista de contas
Ou então um
contas.removeAll(getContas()); // remover de contas todas as contas contidas em getContas()
Qnd uso o Iterator na arquitetura MVC (no caso no Controller, para eu acessar a arraylist), o código fica diferente, ou segue aquele código “padrão” de iterator mesmo? To com receio de ser quebra-galho …
O código padrão de iterator seria isso daqui, certo?
while (iterator.hasNext()) {
InserirModel obj = iterator.next();