[JAVA] - Duvida com Arraylist's

3 respostas
I

Bom dia!

Possuo 3 arraylist’s:
1- Transportadora
2- Cliente
3- Produto

Preciso pegar todos os atributos destas 3 arraylist’s e inserir em um unico objeto da ArrayList “NOTA”.
Eu precisaria fazer uma cópia dos dados de 3 objetos diferentes e inserir em um unico objeto da arraylist Nota.

Alguem sabe como fazer isso ?

3 Respostas

TerraSkilll

Você quer/precisa copiar todos os atributos em si?

Por que não cria uma classe Nota, com os atributos Transportadora, Cliente e Produto, e cria um ArrayList de objetos Nota (se é que será necessário) ?

Abraço.

lourencoccc

Uma possivel solução seria criar uma classe base “AtributoNota” e usando herança criar as classes “Transportadora”, “Cliente” e “Produto” conforme exemplo abaixo:
Espero ter ajudado, vlw!

Exemplo:

import java.util.ArrayList;
import java.util.List;

public class PocList {

    class Transportadora extends AtributoNota{
        String cnpj;
        public String toString(){
            return nome + ", CNPJ " + cnpj;
        }
    }
    
    class Cliente extends AtributoNota {
        String cpf;
        public String toString(){
            return nome + ", CPF " + cpf;
        }
    }
    
    class Produto extends AtributoNota{
        String codigo;
        public String toString(){
            return codigo + " - " + nome;
        }
    }
    
    class AtributoNota {
        Integer id;
        String nome;
    }
    
    class Nota {
        final List<AtributoNota> atributos;
        
        Nota(List<AtributoNota> atributos){
            this.atributos = atributos;
        }
    } 
    
    void imprimir(Nota nota){
        StringBuilder clientes =  new StringBuilder();
        StringBuilder produtos =  new StringBuilder();
        StringBuilder tranportadoras =  new StringBuilder();
        
        for(AtributoNota atributoNota : nota.atributos){
            if(atributoNota instanceof Cliente){
                clientes.append(atributoNota.toString());
                produtos.append("\n");
            }
            if(atributoNota instanceof Produto){
                produtos.append(atributoNota.toString());
                produtos.append("\n");
            }
            if(atributoNota instanceof Transportadora){
                tranportadoras.append(atributoNota.toString());
                produtos.append("\n");
            }
            
        }
        System.out.println("--------- Cliente ---------");
        System.out.println(clientes);
        System.out.println("--------- Produtos ---------");
        System.out.println(produtos);
        System.out.println("--------- Transportadora ---------");
        System.out.println(tranportadoras);
    }
    
    void exemplo1(){
        Nota nota = this.new Nota(new ArrayList<AtributoNota>());
        
        List<Transportadora> transportadoras = new ArrayList<>();
        List<Cliente> clientes = new ArrayList<>();
        List<Produto> produtos= new ArrayList<>();
        
        Transportadora trans = this.new Transportadora();
        trans.cnpj = "789";
        trans.nome = "Express";
        Cliente cliente = this.new Cliente();
        cliente.cpf = "016";
        cliente.nome = "Maria";
        Produto prod1 = this.new Produto();
        prod1.id = 1;
        prod1.nome = "Notebook";
        prod1.codigo = "123";
        Produto prod2 = this.new Produto();
        prod2.id = 2;
        prod2.nome = "Mouse";
        prod2.codigo = "125";
        
        transportadoras.add(trans);
        clientes.add(cliente);
        produtos.add(prod1);
        produtos.add(prod2);
        
        nota.atributos.addAll(transportadoras);
        nota.atributos.addAll(clientes);
        nota.atributos.addAll(produtos);
        
        imprimir(nota);
    }
    
    public static void main(String [] args){
        new PocList().exemplo1();
    }
    
}
I

Muito obrigado!

Funcionou, aqui.

Criado 12 de maio de 2016
Ultima resposta 13 de mai. de 2016
Respostas 3
Participantes 3