Manter produto na lista e atualizar a quantidade

Bom dia a todos!
Pessoal, tenho um outro problema!
Tenho uma lista onde:

Adiciono um produto:
código, descrição, valor e quantidade.

Adiciono outro produto:
código, descrição, valor e quantidade.

Adiciono o mesmo produto anterior:
Deve manter o código, a descrição, o valor e aumentar a quantidade!!!

Nesta lista tbm tem um campo subtotal, onde o mesmo tbm deve atualizar.

Alguém tem uma solução para isto?
Grato.

primeira página

<%
	String codigo = request.getParameter( "codigo" );
	
	carrinho.Produtos prodList = new carrinho.Produtos();
	carrinho.Produto p = prodList.getProduto(codigo);
	String descricao = p.getDescricao();
	int valor = p.getValor(); 
 	%>
 
<HTML>
<HEAD>
</HEAD>
<BODY>
<H1>Pedido de Compra</H1><br>
Código do produto: <%= codigo %><BR>
Descrição do produto: <%= descricao %><br>
Valor: <%= valor %>
<form method="post" action="CompraSucesso.jsp?codigo=<%= codigo %>">
Quantidade: <INPUT type="text" name="quantidade" size="5"> unidades
<INPUT type="submit" value="Comprar">
</form> 
<FORM action="Lista.jsp">
	<INPUT type="submit" name="naocompra" value="Desistir">
</FORM>
</BODY>
</HTML>

segunda página:

<jsp:useBean id="carro" class="carrinho.Carrinho" scope="session"/>
<%
	String codigo = request.getParameter( "codigo" );

	carrinho.Produtos prodList = new carrinho.Produtos();
	carrinho.Produto p = prodList.getProduto(codigo);

	String descricao = p.getDescricao();
	int valor = p.getValor();
	%>

<HTML>
<HEAD>
</HEAD>
<BODY>
&lt%	
	try{ 
		p.setQuantidade(Integer.parseInt(request.getParameter("quantidade"))); 
		
		
			if(p.getQuantidade() == 1){
				carro.addProduto(p);
			}else if(p.getQuantidade() &gt1){
				carro.addProduto(p);
			
		}
		%&gt
		<B>Conteúdo de sua compra:</B><BR><BR>
<TABLE border="2">
	<tr>
		<TD width="90"><b>Código</b><TD>
		<TD width="190"><b>Produto</b></TD>
		<TD width="50" align="center"><b>Valor</b></TD>
		<TD width="50" align="center"><b>Qtd</b></TD>
		<TD width="60" align="center"><b>Subtotal</b></TD>
	</tr>
</TABLE>
<%! int total = 0;%>
<%! int soma = 0; %>
<%
	List cc = carro.getList2();
	int subtotal = 0, total = 0;
		for(int i = 0; i < cc.size(); i++){
			carrinho.Produto n = (carrinho.Produto)cc.get(i);
			subtotal = n.getQuantidade() * n.getValor();
			total+=subtotal; 
	 %>

<TABLE border="2">
	<tr>
		<TD width="90"><% out.println(n.getCodigo()); %><TD>
		<TD width="190"><% out.println(n.getDescricao()); %></TD>
		<TD width="50" align="right"><% out.println(n.getValor()); %></TD>
		<TD width="50" align="right"><% out.println(n.getQuantidade()); %></TD>
		<TD width="60" align="right"><% out.println(subtotal); %></TD>
	</tr>		
</TABLE>
<% } %>
<TABLE border="2">
	<tr>
		<TD width="407" colspan="4" align="right"><b>Total</b></TD>
		<TD width="60" align="right"><%= total %></TD>
	</tr>
</TABLE><BR><BR>
&lt%
	if(p.getQuantidade() &gt= 2){
		%&gt<H4>Você comprou <%= soma %> unidade(s) do mesmo produto!</H4>
		<% } %>
<BR>
<FORM action="Lista.jsp">
	<INPUT type="submit" value="Novo Item">
</FORM>
<FORM action="CarroLista">
	<INPUT type="submit" value="Fechar">
</FORM>
		
<% 	}catch(Exception e){ %>
		<H1>ERRO</H1>
		<B>Utilize somente valor númerico!!!</B>
		<br>
		<FORM method="post" action="ConfirmaProduto.jsp?codigo=<%= codigo %>">
			<INPUT type="submit" value="Voltar">
		</FORM>
 <%	} %>

</BODY>
</HTML>

tente colocar um contador de forma que teu sistema cheque se o produto (código) já está cadastrado. Se estiver cadastrado incrementa contador, se não cadastra novo produto

Sim, entendi!
Da forma que tentei, mas não consegui resultado.
Segue o código:

if(p.getCodigo().equals(p.getCodigo())){
			soma+=p.getQuantidade();
			}else{
			if(p.getQuantidade() == 1){
				if(p.getCodigo().equals(null)){
				carro.addProduto(p);
				}
			}else if(p.getQuantidade() &gt1){
				carro.addProduto(p);
			}
		}

Onde estou errando?

Vc concorda comigo que (p.getCodigo().equals(p.getCodigo()) sempre vai retornar true???
p e p são o mesmo objeto como você colocou aqui.

Vc deverá ter diferenciação entre produto já cadastrado e produto a ser cadastrado.
se nos produtos cadastrados não tiiver o código do produto que vc quer cadastrar,o produto deve ser cadastrado e aquela quantidade do produto que é zero deve acrescer de um
Se nos produtos cadastrados tiver o código do produto você deve apenas acrescer a quantidade. No caso aqui tua quantidade já funciona como contador

Certo, fiz umas modificações:

if(listCar.isEmpty()){
			listCar.add(p);
		}else{
			for(int j = 0; j <listCar.size(); j++){
				Produto n = (Produto)listCar.get(j);
				if(p.getCodigo().equals(n.getCodigo())){
					val = n.getQuantidade();
					val+=p.getQuantidade();
					n.setQuantidade(val);
				}
			}
		}

Agora faltou como cadastrar um código diferente…
Estou tentando terminar… se alguém tiver uma outra solução. Pode me ajudar?>