I have a list and how do I display all the elements?

Asked

Viewed 162 times

1

This method only returns me to the last position of the list, the others it does not show. How do I display all same?

    Agente agente = new Agente();
    List<Agente> lista = getA();

    for(Agente a: lista){
        System.out.println(a.getQuantidade());
    }



    //System.out.println(lista.get(0).getQuantidade());
    }

    public static List<Agente> getA(){
        List<Agente> lista = new ArrayList<Agente>();
        Agente agente = new Agente();
        agente.setQuantidade("2");
        agente.setQuantidade("5");
        agente.setQuantidade("9");
        agente.setQuantidade("7");
        lista.add(agente);
        return lista;

    }
}

That’s how it works, but I think it got really ugly:

public static List<Agente> getA(){
    List<Agente> lista = new ArrayList<Agente>();
    Agente agente;
    agente = new Agente();
    agente.setQuantidade("2");
    lista.add(agente);
    agente = new Agente();
    agente.setQuantidade("5");
    lista.add(agente);
    agente = new Agente();
    agente.setQuantidade("9");
    lista.add(agente);
    agente = new Agente();
    agente.setQuantidade("7");
    lista.add(agente);
    return lista;

}

How can I make it better?

  • 1

    What are the attributes of the Agent class, you need a method that returns a list of Agents, or you want to print each agent’s information on the screen?

1 answer

2


Note this code:

public static List<Agente> getA(){
    List<Agente> lista = new ArrayList<Agente>();
    Agente agente = new Agente();
    agente.setQuantidade("2");
    agente.setQuantidade("5");
    agente.setQuantidade("9");
    agente.setQuantidade("7");
    lista.add(agente);
    return lista;

}

He creates one (and only one) instance of Agente and sets the amount to 2. Then, it sets to 5 in the same instance. Then 9 and 7. He is always defining this amount in the same instance. So, only the last defined value is what counts. The resulting list will only have a single element, after all the method add was only called once.

Already in this way, you create several instances, arrow the amount of each one independent of the others and add each of them in the list:

public static List<Agente> getA(){
    List<Agente> lista = new ArrayList<Agente>();
    Agente agente;
    agente = new Agente();
    agente.setQuantidade("2");
    lista.add(agente);
    agente = new Agente();
    agente.setQuantidade("5");
    lista.add(agente);
    agente = new Agente();
    agente.setQuantidade("9");
    lista.add(agente);
    agente = new Agente();
    agente.setQuantidade("7");
    lista.add(agente);
    return lista;

}

Well, I don’t know what you want to do with this list. But, one way to improve this code there is the one below:

public static List<Agente> getA() {
    int[] quantidades = {2, 5, 9, 7};
    List<Agente> lista = new ArrayList<Agente>();
    for (int q : quantidades) {
        Agente agente = new Agente();
        agente.setQuantidade(String.valueOf(q));
        lista.add(agente);
    }
    return lista;
}

However, I don’t know if this code will be useful to you in your project as a whole, since the entered data is a very specific and arbitrary sequence of numbers. But anyway, that’s the way it is, is to wear a bow for.

  • That’s right. Thank you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.