Remover objeto list

fiz o seguinte para adicionar um objeto na list

Produto lista = pro.Consultar(Integer.parseInt(sports[i]));
carrinho.add( lista);

ai adiciono perfeito na lista, e adiciono na sessao essa lista

session.setAttribute(“Carrinho_Compra”, Temp_carrinho);

e quero remover dessa lista o objeto que me retornou da pesquiza

List carrinho_atual = (List) session.getAttribute(“Carrinho_Compra”);

ai recebo a lista da sessao
faco a pesquisa para ver qual objeto quero remover

carrinho_atual.remove(pro.Consultar(id_produto));

mas nao da certo nao da erro nenhum porem nao remove

vc implementou o método equals pra classe produto?

Sugiro a voce implementar o equals(Object o) utilizando o ID de cada produto, bem como o hashCode().

Ate mais

se não souber implementar o método equals() e hashCode() uma solução temporária é varrer a lista e verificar se o objeto passado por parametro é igual ao objeto na posição n da lista usando o método equals mesmo, ai ele vai achar o correto blz

Posta o código ai cara, fica mais fácil

Esse cara tá de sacanagem. 215 mensagens no GUJ, e já deve ser pelo menos a terceira vez que falo para ele usar a tag code. Vai aqui o link novamente:
http://www.guj.com.br/posts/list/50115.java

Para o método remove funcionar:

  1. A classe produto deve implementar corretamente o método equals;
  2. A classe produto deve implementar corretamente o método hashCode;

meu codigo pego os valores do checkbox selecionados e o ID do produto vem no value do checkbox

cria esse checkbox dentro do for da consulta do produto
<INPUT TYPE=CHECKBOX NAME="check" ID="check" VALUE="<%=pro.getid_produto()%>" 

 String[] sports = request.getParameterValues("check");  

    ProdutoDao pro = new ProdutoDao();

List<Produto> carrinho = (List<Produto>) session.getAttribute("Carrinho_Compra");
if(carrinho!=null){
    

    if (sports != null){ 
        for (int i = 0; i < sports.length; i++){   
            out.println ("<b>"+sports[i]+"<b>"); 
Produto lista = pro.Consultar(Integer.parseInt(sports[i]));
carrinho.add( lista);        
}
            
          }  
  session.setAttribute("Carrinho_Compra", carrinho);    
}else{
List<Produto> Temp_carrinho = new ArrayList<Produto>(); 
    if (sports != null){ 
        for (int i = 0; i < sports.length; i++){   
            out.println ("<b>"+sports[i]+"<b>"); 
Produto lista = pro.Consultar(Integer.parseInt(sports[i]));
Temp_carrinho.add( lista);        
}
            
          } 

  session.setAttribute("Carrinho_Compra", Temp_carrinho);
}
                                           
request.getRequestDispatcher("Produto_Consultar_CARRINHO.jsp").forward(request,response);  

e para remover fiz assim

                   ProdutoDao pro = new ProdutoDao();  
 List<Produto> carrinho_atual = (List<Produto>) session.getAttribute("Carrinho_Compra");
                
  Produto T_lista = pro.Consultar(id_produto);
                carrinho_atual.remove(pro.Consultar(id_produto));

//ou assim tambem nao funciona

carrinho_atual.remove(T_lista);

        session.setAttribute("Carrinho_Compra", carrinho_atual);

mas nao funciona nao para remover nao remove

Você tem certeza que o método pro.Consultar(idProduto) está retornando o produto certo?

aqui o metodo quando eu pesquizo pelo nome do produto ele aparece certo na lista


        public Produto Consultar(Integer id_produto) {
        String sql = "SELECT * FROM produto WHERE id_produto = ?";
        try {
            PreparedStatement stmt = getConexao().prepareStatement(sql);
            stmt.setInt(1, id_produto);
            ResultSet rs = stmt.executeQuery();
            List<Produto> lista = getProduto(rs);
            if(lista.size() > 0)
                return lista.get(0);
        } catch (SQLException sQLException) {
            System.out.println("Erro ao consultar Produto");
        }
        return null;        
    }  

       public List<Produto> listar (Integer id_produto) {
        String sql = "SELECT * FROM produto WHERE id_produto = ?";
        try {
            PreparedStatement stmt = getConexao().prepareStatement(sql);
             stmt.setInt(1, id_produto);
             ResultSet rs = stmt.executeQuery();
                    
            return getProduto(rs);
 
        } catch (SQLException sQLException) {
            System.out.println("Erro ao listar Produto");
        }
        return null;
    }
      
no servelt
         String nome_produto = request.getParameter("nome_produto");
                    
                ProdutoDao pro = new ProdutoDao();
                
                List<Produto> lista = pro.listar(nome_produto);       
 
       request.setAttribute("lista",lista);   
request.getRequestDispatcher("Produto_Consultar.jsp").forward(request,response);  
   

ai aparece bem certinho porem quando uso o listar
quando uso o consultar nao da erro mas com o listar incompativel tipos e com consultar da certo
List lista = pro.listar(nome_produto);

Seu código tem uma série de problemas:

  1. Porque os parâmetros são do tipo Integer e não do tipo primitivo int?
  2. Onde você está fechando os Statements? É necessário e imprescindível dar close() em todos os statements abertos;
  3. Volto a pergunta. Tem certeza que aquela linha está retornando o produto corretamente? Pode ser que o id inválido esteja gravado na sessão, por exemplo. Ou que você esteja usando a constante errada. Não tem como vc fazer depuração?

Cara, segue um exemlo que funciona:

import java.util.ArrayList;
import java.util.List;

public class RemocaoDeProduto {
	public static void main(String [] asdf){
		List<Produto> lista = new ArrayList<Produto>();
		Produto p1 = new Produto();
		p1.setId(1);
		Produto p2 = new Produto();
		p2.setId(2);
		Produto p3 = new Produto();
		p3.setId(3);
		
		lista.add(p1);
		lista.add(p2);
		lista.add(p3);
		
		lista.remove(p2);
		for (Produto produto : lista) {
			System.out.println(produto.getId());
		}
	}
}
class Produto{
	private int id;

	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	public boolean equals(Object o){
		boolean ok = false;
		if(o != null && o instanceof Produto && this.getId() == ((Produto)o).getId()){
			ok = true;
		}
		return ok;
	}
	
	public int hashCode(){
		return this.getId();
	}
} 

Espero ter ajudado!

assim verifiquei aqui e esta pegando certinho certinho o produto

Produto p3 = pro.Consultar(id_produto);

out.println (""+ p3.getid_produto()+"");
carrinho_atual.remove(p3);

tinha 2 produto adicionado na lista de codigo IDproduto 3 IDproduto 4

ai coloquei para excluir o produto 4 e o out.println (""+ p3.getid_produto()+""); saiu o numero 4 certinho esta pegando certo
porem nao apaga de maneira nenhuma