Olá,sou nova aqui no fórum, gostaria de saber como faço para criar um vetor de inteiros no Java? Até já tentei, mas não sei o que estou fazendo de errado, pois está dando um erro.
private Vector produtoId = new Vector ();
erro—> unexpected type;
se caso alguém souber o por que desde erro me respondam por favor.
Ao definir os tipos genericos, deve ser utilizadas classes e não tipos primitivos
rodrigo.bossini
Faz isso não…não use Vector. Use um ArrayList.
ArrayList<Integer>list=newArrayList<Integer>();
Mikhas
O que a galere tem contra Vector?
B
bKn
É lento por ser ThreadSafe.
ViniGodoy
A Sun não recomenda mais o uso. Ela considera o Vector “legacy API”, ou seja, está lá só pq programas já foram escritos por ele;
Todos os seus métodos são synchronized. O que significa que são mais lentos, e isso normalmente não é necessário (mesmo no caso de aplicações multi-thread);
A interface foi “recalchutada” para suportar List. Portanto, existem métodos duplicados, fora da Collections API. É o caso de add e addElement que fazem exatamente a mesma coisa. Se você cair na bobeira de usar esses métodos, fica difícil trocar de implementação no futuro.
O que eu não entendendo é… pq a galera insiste no Vector?
Usar o ArrayList é tão fácil quanto.
[quote=rod.attack]Faz isso não…não use Vector. Use um ArrayList.
ArrayList<Integer>list=newArrayList<Integer>();
Melhor ainda é declarar assim:
List<Integer>list=newArrayList<Integer>();
Sempre crie as referências às colections com o tipo da interface, não da classe que as implementa. Isso te permite trocar facilmente de implementação a qualquer hora, e facilita também a interoperabilidade entre coleções diferentes.
B
Bruno_Laturner
Por causa do nome. Quem quer usar vetores a primeira coisa que encontra é Vector.
Documentação/tutoriais. Mesmo as Colelctions terem sido lançadas há mais de 10 anos, livros mais velhos, mesmo com revisões atuais, ainda ensinam Vector.
ViniGodoy
E acho que 3:
Pq alguns professores desatualizados ainda ensinam assim.
Infelizmente, tem gente que mesmo conhecendo e lendo sobre o ArrayList, ainda insistirá no Vector. Era mais para essas que a minha pergunta se dirigia.
J
JackMoura
OK…mas como faço para atribuir uma valor a uma determinada posição desse ArrayList,pois com Vector se usa setElementAt e com esse ArrayList é a mesma coisa??
Obrigada.
ViniGodoy
Com o ArrayList você usa o set. Aliás, o set funciona com o vector também.
Faz a mesma coisa que o setElementAt, mas é mais fácil de escrever.
B
Bruno_Laturner
Recomendo ler a documentação do List, vai descobrir muitos mais métodos que get e set, alguns úteis até.
J
JackMoura
Aproveitando,vou fazer uma outra pergunta de um outro erro que tb está o correndo…
quando eu vou comparar o valor desse Arraylist de inteiro que criei com um valor vindo do banco ele da um erro.
estou fazendo assim:
(onde ids é meu List e produto e vem do banco para fazer a comparação)
<%intprod_cod,prod_qtd,produto;floatprod_preco;Stringacao,id,id2,sql;id="";Carrinhocarrinho=newCarrinho();prod_cod=Integer.parseInt(request.getParameter("codigo"));prod_qtd=Integer.parseInt(request.getParameter("qtd"));acao=request.getParameter("acao");if(session.getAttribute("carrinho")!=null){carrinho=(Carrinho)session.getAttribute("carrinho");}carrinho.addItem(prod_cod,prod_qtd);session.setAttribute("carrinho",carrinho);List<integer>ids=carrinho.getIds<integer>();List<integer>qtd=carrinho.getQtd<integer>();for(inti=0;i<ids.size();i++){id=id+ids.get(i)+",";// out.println(ids.get(i) + " - " + qtd.get(i) + "___" + "<br />");}id2=id.substring(0,id.length()-1);sql="SELECT * FROM produto where prod_id in "+"("+id2+")";Conexaoc=newConexao();ResultSetrs=c.executeQuery(sql);while(rs.next()){prod_preco=rs.getFloat("prod_preco");produto=rs.getInt("prod_id");for(inti=0;i<ids.size();i++){if(ids.get(i)==produto){out.println(ids.get(i)+" -- "+produto+"<br />");}}}%>
B
Bruno_Laturner
List<Integer>ids=carrinho.getIds();// Integer é com letras maiúsculas, como toda classe.List<Integer>qtd=carrinho.getQtd();// não é necessária declarar o tipo ao obter de algum método, basta que eles sejam um List<Integer> em suas declarações.