Bom dia…
eu preciso criai um método para remover elementos de um ArrayList, por exemplo: quando eu digitar “arroz” remove o arroz eu estou fazende desse modo
[code] public void removeProduto(int p)
{
produtosEscolhidos.remove(p);
}[/code]
Mas desse jeito ele pede a posição do ArrayList que o elemento esta
Obrigado desde ja
o que tem dentro do seu ArrayList ?? strings ?? objetos produtos ??
se for string…
produtosEscolhidos.remove(“arros”);
se for objetos, posta aki o código do teu objeto produto
Supondo que seja um objeto Produto a forma simples de remover é algo assim
public removeProduto(String nomeDoProduto) {
for(Iterator<Produto> produtos = produtosEscolhidos.iterator(); produtos.hasNext(); ) {
if (nomeDoProduto.equals( produtos.next().getNome() ) ) {
produtos.remove();
break; //exclua essa linha se quiser remover todos os produtos com o nome, e mantenha para remover só o 1°
}
}
}
A diferença do break é que ele aumenta sua performance, vc assim que excluir para de procurar, sem o break, vc irá excluir e continuará procurando pela ocorrencia para tentar excluir novamente…
Se vc for ter essa mesma abordagem a varios tipos de objetos destintos… existe uma forma de criar um método pra fazer essas remoções, sem ter que ficar reescrevendo o código, qualquer coisa avisa
Obrigado deu certo, eu estou no 1º semestre da faculdade, e eu não entendi muito bem ow vc fez
[code] public void removeProduto(String nomeDoProduto) {
for(Iterator produtos = produtosEscolhidos.iterator(); produtos.hasNext(); )//essa linha eu não entedi o produtosEscolhidos {
if (nomeDoProduto.equals( produtos.next().getNome() ) ) {
produtos.remove();
}
} [/code]
Obrigado
primeiro é preciso saber se você sabe o que é um Iterator…
Um objeto Iterator é capaz de varrer uma coleção, através de 3 funções
[code]Iterator itr = lista.iterator();
itr.hasNext() //verifica se há mais objetos
itr.next() //retorna o proximo objeto
itr.remove() //remove o ultimo objeto chamado através de next[/code]
vc conhece um for ?? um for é dividido assim
for ( atribuições ; condição ; operação por iteração )
em “atribuições” vc pode definir variáveis que so existirão dentro do scopo, ou seja, quando o for acaba as variáveis defindas ali, perdem suas referencias e ficam elegiveis para o coletor de lixo, assim vc pode otimizar a memoria…
em “condição” é um boolean que faz o loop se manter dentro do for
em “operação por iteração” é uma operação realizada apos cada loop, que neste nosso caso não é necessária.
colocando de forma literal o que escrevi esta escrito o seguinte
para ( "Um iterator de produtos" ; "enquanto houver produtos" ; "não precisa fazer nada aqui" ) {
se ("o nome do proximo produto for igual ao enviado") {
"remova o produto";
}
}
Obrigado pela ajuda, eu pesquisei em um livro e com sua ajuda deu pra enteder melhor…