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

Problema com add Arraylist.

Olá bom dia, tudo bem galera? Estou com uma duvida no meu codigo sobre ArrayList. Estou fazendo um exercicio pessoal e encontrei esta duvida: Quando eu faço uma lista sempre preciso adicionar(add) os itens da lista,estou com dificuldades quando tenho que adicionar muitos itens, existe uma forma mais pratica para adicionar os itens?Pensei em fazer um foreach mas não deu muito certo... Segue a parte do meu codigo que estou com dificuldade:

        List<FormularioDoCliente> listaDeFormularioDocliente = new ArrayList<FormularioDoCliente>();
        FormularioDoCliente fc1 = new FormularioDoCliente();
        FormularioDoCliente fc2 = new FormularioDoCliente();
        FormularioDoCliente fc3 = new FormularioDoCliente();
        FormularioDoCliente fc4 = new FormularioDoCliente();
        listaDeFormularioDocliente.add(fc1);
        listaDeFormularioDocliente.add(fc2);
        listaDeFormularioDocliente.add(fc3);
        listaDeFormularioDocliente.add(fc4);

Quem puder me ajudar agradeço.Obrigado.

6 respostas

David, nesse caso seria o for tradicional ou o while mas você tem que dizer o numero de iterações:

List<FormularioDoCliente> listaDeFormularioDocliente = new ArrayList<FormularioDoCliente>();

for(int i = 0; i <= 3; i++) {
    FormularioDoCliente fc = new FormularioDoCliente();
    listaDeFormularioDocliente.add(fc);
}

Bom dia David!

Uma forma de fazer pode ser assim. Minha questão para você é quando tu tiver que passar algo no construtor ai você irá conseguir colocar somente um tipo de informação.

A não ser quando você tenha na interface gráfica um formulário ai você consegue iterar nos campos e pegar todos itens e colocar no construtor.

for (int i = 0; i < 10; i++) {
            listaDeFormularioDocliente.add(new FormularioDoCliente());
        }
        System.out.println("Lista tem " + listaDeFormularioDocliente.size());

O problema que no laço eu só consigo acessar os objetos no laço. Exemplo:

for(int i = 0; i <= 3; i++) {
            FormularioDoCliente fc = new FormularioDoCliente();
            listaDeFormularioDocliente.add(fc);
        fc.setNumeroDoCartaoDeCredito(numeroDoCartaoDeCredito);
        }

fora do laço eu nao consigo acessar os objetos da lista... E também nao consigo adicionar um numero diferente no set...

A minha ideia era que sempre que eu instancio um objeto adicionasse automaticamente na lista e pudesse ter acesso aos atributos ou modificar dos itens na lista no momento que eu quisesse.

solução!

Cara automaticamente não, você tem que usar o metodo add. o que pode fazer é assim Toda vez que for adicionar, já instanciar.

listaDeFormularioDocliente.add(new FormularioDoCliente());

e para pegar ele fora do laço é só dar um get no index dele e atribuir para uma variável.

 for (int i = 0; i < 10; i++) {
         listaDeFormularioDocliente.add(new FormularioDoCliente());
         }
         FormularioDoCliente formularioDoCliente = listaDeFormularioDocliente.get(0);

Para você entender a lista só "nasce e morre" se você criar dentro do for. Uma vez instaciada fora do laço ela existe com o que você adicionou dentro do laço.

Obrigado Guilherme e Eduardo entendi agora.