pq não imprime tds os elementos da lista?
[code]List produtos = new ArrayList();
Produto produto = new Produto();
produto.setIdProduto(001);
produto.setNomeProduto("Borracha");
produto.setValorProduto(0.30);
produtos.add(produto);
produto.setIdProduto(002);
produto.setNomeProduto("Lápis");
produto.setValorProduto(0.40);
produtos.add(produto);
produto.setIdProduto(003);
produto.setNomeProduto("Carderno");
produto.setValorProduto(2.50);
produtos.add(produto);
System.out.println(produtos.size() +" é o total de elementos na lista.");
for (int i = 0; i < produtos.size(); i++) {
//System.out.println(produtos.get(1));//dá IndexOutOfBoundsException
System.out.println();
}
}[/code]
import java.util.ArrayList;
import java.util.List;
public class mainProduto {
public static void main(String[] args) {
List<Produto> produtos = new ArrayList<Produto>();
Produto produto = new Produto();
produto.setIdProduto(001);
produto.setNomeProduto("Borracha");
produto.setValorProduto(0.30);
produtos.add(produto);
produto.setIdProduto(002);
produto.setNomeProduto("Lápis");
produto.setValorProduto(0.40);
produtos.add(produto);
produto.setIdProduto(003);
produto.setNomeProduto("Carderno");
produto.setValorProduto(2.50);
produtos.add(produto);
System.out.println(produtos.size()
+ " é o total de elementos na lista.");
for (Produto p : produtos) {
System.out.println(p.getIdProduto() + p.getNomeProduto() + p.getValorProduto());
}
}
}
dá uma olhada nesse exemplo que você vai sacar o que que rolou
[quote=andredecotia]pq não imprime tds os elementos da lista?
[code]List produtos = new ArrayList();
Produto produto = new Produto();
produto.setIdProduto(001);
produto.setNomeProduto("Borracha");
produto.setValorProduto(0.30);
produtos.add(produto);
produto.setIdProduto(002);
produto.setNomeProduto("Lápis");
produto.setValorProduto(0.40);
produtos.add(produto);
produto.setIdProduto(003);
produto.setNomeProduto("Carderno");
produto.setValorProduto(2.50);
produtos.add(produto);
System.out.println(produtos.size() +" é o total de elementos na lista.");
for (int i = 0; i < produtos.size(); i++) {
//System.out.println(produtos.get(1));//dá IndexOutOfBoundsException
System.out.println();
}
}[/code][/quote]
Você só inseriu um Objeto produto, sempre o mesmo, criado na linha acima. Voce só foi “setando” valores diferentes, mas o objeto que voce inseriu é o mesmo. Por isso, quando voce tenta acessar pelo get(1), diz que ultrapassou os índices do ArrayList, já que como voce inseriu um único objeto, só existe o índice 0.
Boa noite Andredecotia.
Tente isso:
List<Produto> produtos = new ArrayList<Produto>();
Produto produto = new Produto();
produto.setIdProduto(001);
produto.setNomeProduto("Borracha");
produto.setValorProduto(0.30);
produtos.add(produto);
produto = new Produto();
produto.setIdProduto(002);
produto.setNomeProduto("Lápis");
produto.setValorProduto(0.40);
produtos.add(produto);
produto = new Produto();
produto.setIdProduto(003);
produto.setNomeProduto("Carderno");
produto.setValorProduto(2.50);
produtos.add(produto);
System.out.println(produtos.size() +" é o total de elementos na lista.");
for (int i = 0; i < produtos.size(); i++) {
System.out.println(produtos.get(i).getIdProduto());
System.out.println(produtos.get(i).getNomeProduto());
System.out.println(produtos.get(i).getValorProduto());
System.out.println();
}
Quando voce selecione "produtos.get(1)", voce só selecione o Objeto "Produto" inteiro que está armazenado no ArrayList, porém nunca os valores dos seus métodos.
Outra coisa, sempre que voce inserir um novo Objeto Produto no ArrayList, voce tem que instanciar um novo Produto, mesmo que seja na mesma instância, ai voce limpa a instancia anterior e cria uma nova.
for (int i = 0; i < produtos.size(); i++) {
System.out.println(produtos.get(i).getIdProduto());
System.out.println(produtos.get(i).getNomeProduto());
System.out.println(produtos.get(i).getValorProduto());
System.out.println();
}
tem o mesmo efeito de
for (Produto p : produtos) {
System.out.println(p.getIdProduto() + p.getNomeProduto() + p.getValorProduto());
}
só tá imprimindo sempre a mesma coisa várias vezes… pq será?

Boa noite a todos.
Voce observou o que nós dissemos quanto a instanciar um novo produto a cada inserção de dados:
Produto produto = new Produto();
produto.setIdProduto(001);
produto.setNomeProduto("Borracha");
produto.setValorProduto(0.30);
produtos.add(produto);
// Crie uma nova instância de produto
produto = new Produto();
produto.setIdProduto(002);
produto.setNomeProduto("Lápis");
produto.setValorProduto(0.40);
produtos.add(produto);
// Crie uma nova instância de produto
produto = new Produto();
produto.setIdProduto(003);
produto.setNomeProduto("Carderno");
produto.setValorProduto(2.50);
produtos.add(produto);
Está imprimindo sempre o último registro, porque voce só está armazenando uma única instância de Produto, e está atualizando o mesmo objeto.