Usar arrayList (Coleçao)

Boa tarde a todos

Tenho um array de sem posicoes de um classe interna no caso itens de um pedido, so que como eu vou controlar? tentei limitar o uso a 100 itens no maximo pois crei um array com este tamanho mais isso é temporario pois alem de feio é coisa de porco, andei pesquisando e vi que a melor saida seria usar arrayList porem nao sei como usar alguem pode me ajudar?

segue o codigo hoje!

package pedidos;
import entid.Cliente;
import entid.Produto;
import java.util.ArrayList;

public class Carrinho {
    
    private Cliente cliente = new Cliente();
    private Item[] itens = new Item[100];
    //private List itenss = new ArrayList();
    private int indice;
    boolean vazio;
    
    public void Carrinho(){
        
        setCliente(null);
        indice = 0;
        int i = 0;
        vazio = true;
        
        
    }
    public void addItem(String prod, int quant, String descr)
	{
        Item item = new Item();
        item.setProd(prod);
        item.setQuant(quant);
        item.setDescr(descr);
        itens[getIndice()] = item;
	setIndice();
	vazio = true;
    }     
    
    public boolean getVazio(){
        return vazio;
    }

    public Cliente getCliente() {
        return cliente;
    }
    
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
    
    public Item getItem(int ind){
    return itens[ind];
    }
    
    public void setItem(int ind , Item iten){
     this.itens[ind] = iten;
    }
    
    public int getIndice() {
        return indice;
    }
    
    public void setIndice() {
        this.indice++;
    }
   
    public void rmIndice(){
        this.indice--;
    } 
    
}

Valeu Galera!

Vc deve criar um objeto List assim:

List itens = new ArrayList(); //deve ser do pacote java.util

vc ja tera a sua lista criada;

para inserir elementos na lista faça o seguinte

itens.add(item a ser adicionado);
e para remover itens.remove(item a ser removido);

Use tipos genéricos(List<Item>), já passando a sua lista um dado Item.

private ArrayList = new ArrayList();

tenta assim nao lembro…faz tempo ein

no caso eu teria que depois pesquisar se um dado item ja foi incluido existe alguma funcao pra isso no arraylist?

por exemplo tenho item 1 e item 2 no arraylist agora o user vai inserir mais um item porem é do mesmo produto do item 2 existe algum funcao que me retorne o indice do item 2?

valeu pela atençao galera

Existe a função itens.contains(objeto a ver se existe na lista) q te retorna um boleano true se existe e false caso contrario

O Lançe do genérico fica assim
List itens = new ArrayList();

Para varrer uma lista vc precisa usar o iterator dessa forma

Iterator it = itens.iterator(); //Cria um iterator apartir da lista de itens

while (it.hasNext()) { //Varre a lista
Item elem = (Item) it.next(); //pega o elemento da lista
// comandos e tratamento do objeto recuperado.
}

Sugiro q vc pesquise sobre Collections para maiores informaçoes sobre List, Arraylist, e outras classes e interfaces de coleções, tem bastante coisa.

Qualquer duvida estamos ae.

assim vc faz isso

List<tipo> lista = new ArrayList<tipo>();
lista.add(objeto);
//imprimindo toda a lista
for(tipo a : lista)
System.out.println(a);

obs.: O tipo so existe a partir da versao 1.5.

flw!

estou usando o netbeans como verifico se ele tem o 1.5???

abraço!

Uma maneira eh

Abra o prompt de comandos(DOS) e digite o comando

java -version

e veja qual a versao do java q vc tem instalado na sua maquina

Pode ser q o netbeans use outro compilador q naum seja o da sua maquina entao preciso ver qual o compilador q ele usa

Nao trabalho com o netbeans mais acredito q para ver a versao do java e parecido com o eclipse

Clique com o direito na pasta do seu projeto e va em properties e depois em java Compiler (ou algo parecido)
La tera a versao do compilador java JDK q ele utiliza

java version “1.6.0_03”
Java™ SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot™ Client VM (build 1.6.0_03-b05, mixed mode, sharing)

creio que seria a mais atual?

Valeu pela ajuda galera, estive olhando o collections vai dar certo caso eu consiga fazer funcionar, galera estou vendo aqui sera que pode ser por conta de ser um projeto web???

pois abri um projeto desktop e fiz as mesmas linhas de codigo e funcionou…

Obrigado pela atencao de todos!

Galera, me desculpem a ‘intrometeção’, mas queria saber por que usar List<> intens = new ArrayList<> do que ArrayList<> itens = new ArrayList<>.
Acabei de fazer prova sobre herança e polimorfismo, mas confesso que polimorfismo to boiando :frowning:

com List<> vc programa para interface.
com ArrayList<> vc programa para classes e vc tem menos flexibilidade.

qualquer coisa pode ser uma List<> - LinkedList, Vector, ArrayList. Porem quando vc usa apenas o ArrayList so pode ser arrayList.
Ah quando vou usar isso?
Bom imagine a situação vc desenvolve um modulo, que precisa de uma lista… se vc pode como ArrayList vc está dizendo que os metodos nao vai ser sincronizado que so pode ser do tipo list… ai vamos dizer que outro programador de outro departamento use esse modulo seu tb… so que ele precisa sincronizar os processo entao com List<> ele pode usar um Vector por exemplo e manipular a lista tranquilamente… ao contrario do outro.
ArrayList – Vector; invalido - nao posso passar um vector para Arraylist
List – vector; valido. posso passar um vector para List

espero ter ajudado!! Tenha em mente que programar para interface sua classe vai ter mais flexibilidade.

flw!

Hmmm… que interessante isso.
Eu também poderia usar o cast?

List<String> lista = new ArrayList<String>

lista = LinkedList<String>

?

esse seu ultimo codigo é valido!

Hmmm… realmente o código fica muito mais flexível… Mas então eu poderia fazer assim

Object lista = new ArrayList<String>

também?
Daria também pra mudar pra Set daí.

Acho que não daria certo né.

Você pode fazer isso

Object list = new ArrayList();

mas não pode chamar os métodos da ArrayList só os de Object;E fazer um cast para Set lhe retornaria um ClassCastException.

Hmmm…
Beleza então cara. Agora tudo faz sentido :smiley:

ai vc ja quer abusar do recurso… tudo em java extends a Object(String, StringBuilder, Integer)… iai percebeu o problema?

Galera valeu as dicas! valeram!