ArrayList

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…