Java OO arrayList e

10 respostas
P

Bom dia,

galera depois de pesquisar e não encontrar nada ( devo fazer pesquisas mal pra caramba ) me cadastrei no fórum pois acredito que alguém pode dar algumas dicas para este burro, sem mais delongas vamos para as duvidas/problemas.

Preciso criar um “programa” ( está mais para POGama ) onde você cadastra produtos, compra e vende.
Até ai tudo bem, fiz a tela, arrastei os botões mas estou tendo problemas ATUALMENTE com os arrayList pois não sei como implementar.

Declaração que se faz:

ArrayList produtos = new ArrayList<>();

produtos.add("Mouse");

O que preciso é que cada posição da lista leve mais de uma informação ficando desta maneira.

Cód, Descrição, Qtde, preço.

produtos.add(001 , “Mouse” , 12 , 15.00);

Sei que quando criamos o array list devemos declarar seu tipo porem terei ( preciso ter em cada posição(“linha”) mais de 1 tipo de informação ) Int, String, Double…

RESUMO:

Como faço para criar um array list que receba vários dados de diferentes tipos por posição(“linha”) ?

10 Respostas

Rodrigo_Sasaki

Opa, tudo bom?

Antes de postar por favor leia o nosso How To. Tem uma séria de regras e dicas sobre como postar.

Agora em relação ao seu problema:

Eu acho que faltam conceitos de OO pra você mesmo, como o conceito de o que é um objeto :)

Você pode criar um objeto que possui esses 4 atributos, e fazer uma lista dele. Segue a classe:
class Produto {
	
	private int codigo;
	private String nome;
	private int quantidade;
	private double preco;
	
	public Produto(int codigo, String nome, int quantidade, double preco){
		super();
		this.codigo = codigo;
		this.nome = nome;
		this.quantidade = quantidade;
		this.preco = preco;
	}
	
	public int getCodigo(){
		return codigo;
	}
	
	public void setCodigo(int codigo){
		this.codigo = codigo;
	}
	
	public String getNome(){
		return nome;
	}
	
	public void setNome(String nome){
		this.nome = nome;
	}
	
	public int getQuantidade(){
		return quantidade;
	}
	
	public void setQuantidade(int quantidade){
		this.quantidade = quantidade;
	}
	
	public double getPreco(){
		return preco;
	}
	
	public void setPreco(double preco){
		this.preco = preco;
	}
	
}
E aí faz a lista de Produtos assim:
List<Produto> produtos = new ArrayList<>();
produtos.add(new Produto(001, "Mouse", 12, 15.00));
P

Concordo plenamente com você.
SEMPRE FUI terrível de ruim em OO, nunca entendi o conceito porem preciso encarar né e depois de muito tempo sem POGamar uma linha, ta osso. ENFIM
Obrigado pela ajuda, irei testar e na primeira hora posto aqui se deu certo.

ViniGodoy

Por favor, ao postar tópicos, evite destacar no título o óbvio como [Dúvida] [Ajuda], [Socorro] ou [Urgente]. Leia o How To que o Sasaki indicou.

igor_ks

Dando um pouco mais mastigadinho, oq o Rodrigo Sasaki quis dizer com “fazer uma lista do objeto Produto” seria o seguinte:

Depois de ter criado a classe produto, vc instancia ele e seta os valores

Produto p = new Produto
p.setCodigo(1);
p.setNome("Abacaxi");
p.setQuantidade(10);
p.setPreco(3.65);

Isso é um Objeto, de Um produto. Voce cria mais produtos depois e faz uma lista com todos eles…

ArrayList <Produto> produtos = new ArrayList<Produto>(); 
produtos.add(p); //onde "p" se referencia ao produto criado acima

Repare no ArrayList de Produto e não de Strings

ViniGodoy

Melhor ainda é declarar a lista assim:

List &lt;Produto&gt; produtos = new ArrayList&lt;Produto&gt;();

Ou, se for Java 7:

List &lt;Produto&gt; produtos = new ArrayList&lt;&gt;();
P

Obrigado a todos pela ajuda
Tranquei em outro problema mas este irei pesquisar.

P

Buenas pessoal...
.

O código que segue é parte do problema que preciso usar os arrayList mas acredito que esteja fazendo de forma errônea. Não sei se está sendo inserido os dados no ArrayList, talvez esteja instanciando de forma errada. . Hávia criado uma variável linha que seria um contador para inserir os próximos dados na linha seguinte da tabela porem não estava funcionando. . RESUMO: Suspeito estar fazendo as inserções de forma errada .
Produtos P = new Produtos();
        P.setCodigo(Integer.parseInt(JTF_Cod_Cadastrar.getText()));
        P.setNome(JTF_Descricao_Cadastrar.getText());
        P.setQuantidade(Integer.parseInt(JTF_Qtde_Cadastrar.getText()));
        P.setPreco(Double.parseDouble(JTF_Preco_Cadastrar.getText()));
        
        ArrayList <Produtos> Produtos = new ArrayList<>();   
        Produtos.add(P);

        // ordem das variaveis: linha, coluna. Isto é uma tabela.       
        JT_Cadastrar.setValueAt( P.getCodigo() , 0 , 0);
        JT_Cadastrar.setValueAt( P.getNome() , 0 , 1);
        JT_Cadastrar.setValueAt( P.getQuantidade() , 0 , 2);
        JT_Cadastrar.setValueAt( P.getPreco() , 0 , 3);
ViniGodoy

Sim, seu código cheira a DefaultTableModel.

Leia o link ao lado do texto em vermelho na minha assinatura.

P

O programa tem sua parte gráfica com TextField, Tabela e botoes…

O que preciso fazer é pegar o que é digitado nos textfield armazenar num array list e jogar numa tabela.

bem a grosso modo é
Cadastrar produtos, comprar produtos(repor estoque) e vender produtos, tudo isso usando textfield, arrayList(indicado como melhor forma de fazer) e botoes.

ViniGodoy

Ótimo! Então nesse caso você estuda o link que está ao lado do texto em vermelho, na minha assinatura.

Criado 18 de dezembro de 2012
Ultima resposta 19 de dez. de 2012
Respostas 10
Participantes 4