Create generic type in ArrayList to persist data

3

I'm having difficulty understanding the concept of Dao and how I could create a specific type to store my data, I'm initially using an ArrayList of Strings and need to adapt it to an ArrayList of Object Product, which would have, for example code / description / quantity.

How do I declare:

 private static ArrayList<String> Produto = new ArrayList<>();

How do I add:

Produto.add(codigo + " | " + descricao + " | " + quantidade);

How do I read:

listaDados = Produto.stream().map((string) -> string + "\n").reduce(listaDados, String::concat);

How would this be in an object of type Product instead of String?

    
asked by anonymous 16.03.2016 / 13:01

1 answer

2

I believe this is what you want:

class Produto{
    private Integer codigo;
    private String descricao;
    private Integer quantidade;

    public Produto(Integer codigo, String descricao, Integer quantidade){
        this.codigo = codigo;
        this.descricao = descricao;
        this.quantidade = quantidade;
    }

    /*Getters setters*/
    @Override
    public String toString(){
         return this.codigo+" "+this.descricao+" "+this.quantidade;
    }
}

Now that you have your class Produto , you can create some objects of it and add to ArrayList of Produto

Produto produtoCueca = new Produto(1, "Cueca", 5);
Produto produtoCalcinha = new Produto(2, "Calcinha", 5);

//Lista de produtos
ArrayList<Produto> listaProdutos = new ArrayList<Produto>();
listaProdutos.add(produtoCueca);
listaProdutos.add(produtoCalcinha);

Explanation of toString : In Java, when you try to print an instance of a class, it calls the toString method of that class. But since you did not define this method, toString is called from the parent class, in the case Object , which causes System.out.println not to be as desired.

So if you want to customize how an instance of your class will print, you have to override the toString method.

Reference: when to use toString () method

    
16.03.2016 / 14:57