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!
packagepedidos;importentid.Cliente;importentid.Produto;importjava.util.ArrayList;publicclassCarrinho{privateClientecliente=newCliente();privateItem[]itens=newItem[100];//private List itenss = new ArrayList();privateintindice;booleanvazio;publicvoidCarrinho(){setCliente(null);indice=0;inti=0;vazio=true;}publicvoidaddItem(Stringprod,intquant,Stringdescr){Itemitem=newItem();item.setProd(prod);item.setQuant(quant);item.setDescr(descr);itens[getIndice()]=item;setIndice();vazio=true;}publicbooleangetVazio(){returnvazio;}publicClientegetCliente(){returncliente;}publicvoidsetCliente(Clientecliente){this.cliente=cliente;}publicItemgetItem(intind){returnitens[ind];}publicvoidsetItem(intind,Itemiten){this.itens[ind]=iten;}publicintgetIndice(){returnindice;}publicvoidsetIndice(){this.indice++;}publicvoidrmIndice(){this.indice--;}}
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);
Ironlynx
Use tipos genéricos(List<Item>), já passando a sua lista um dado Item.
finch
private ArrayList = new ArrayList();
tenta assim nao lembro…faz tempo ein
protheusx
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
rafarcm
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.
//imprimindo toda a listafor(tipoa:lista)System.out.println(a);
obs.: O tipo so existe a partir da versao 1.5.
flw!
protheusx
estou usando o netbeans como verifico se ele tem o 1.5???
abraço!
rafarcm
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
protheusx
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!
Andre_Brito
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
LPJava
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!
Andre_Brito
Hmmm… que interessante isso.
Eu também poderia usar o cast?