Preciso de uma ajuda com lógica (muito mesmo)

Seguinte, tenho ma lista com Produtos, esse produtos tem alguns repetidos, quando for repetido preciso acumular alguns valores (quantidade, valor unitário, valor total, etc), e no próximo se for diferente preciso colocar todos esses valores acumulados no anterior e guardar esse anterior em uma outra lista.

Fiz esse código mas não está dando certo.

[code]Produto itemAntes = null;//listaProdutos.get(0);
int quantosTem = listaProdutos.size();
int counter = 0;
double quantidadeComercial2 = 0.0;
double quantidadeTributada2 = 0.0;
double valorTotal2 = 0.0;
double valorUnitario2 = 0.0;
double valorUnitarioTributato2 = 0.0;
double valorDesconto2 = 0.0;
double valorFrete2 = 0.0;

while (it1.hasNext()) {
Produto item = it1.next();
counter++;
quantidadeComercial2 = quantidadeComercial2 + item.getQuantidadeComercial();
quantidadeTributada2 = quantidadeTributada2 + item.getQuantidadeTributavel();
valorTotal2 = valorTotal2 + item.getValorTotal();
valorUnitario2 = valorUnitario2 + item.getValorUnitario();
valorUnitarioTributato2 = valorUnitarioTributato2 + item.getValorUnitarioTributavel();
valorDesconto2 = valorDesconto2 + item.getValorDesconto();
valorFrete2 = valorFrete2 + item.getValorFrete();

if (item.equals(itemAntes) && counter > 1) {
    System.out.println("Anterior: " + itemAntes.getCodigoProdutoServico());
    System.out.println("Atual: " + item.getCodigoProdutoServico());
    System.out.println("Produto: " + item.getCodigoProdutoServico() + ") " + item.getDescricao());
    quantidadeComercial2 = quantidadeComercial2 + item.getQuantidadeComercial();
    quantidadeTributada2 = quantidadeTributada2 + item.getQuantidadeTributavel();
    valorTotal2 = valorTotal2 + item.getValorTotal();
    valorUnitario2 = valorUnitario2 + item.getValorUnitario();
    valorUnitarioTributato2 = valorUnitarioTributato2 + item.getValorUnitarioTributavel();
    valorDesconto2 = valorDesconto2 + item.getValorDesconto();
    valorFrete2 = valorFrete2 + item.getValorFrete();
} else {
    // Quando chegar em um DIFERENTE do anterior QUERO adicionar a uma lista o anterior com os valores acumulados
    System.out.println("== AGORA TEM QUE ADICIONAR ===");
    System.out.println("Produto: " + item.getDescricao());
    System.out.println("Quantidade: " + quantidadeComercial2);
}
itemAntes = item;

}
[/code]Alguém me ajuda?

[quote=javer]Seguinte, tenho ma lista com Produtos, esse produtos tem alguns repetidos, quando for repetido preciso acumular alguns valores (quantidade, valor unitário, valor total, etc), e no próximo se for diferente preciso colocar todos esses valores acumulados no anterior e guardar esse anterior em uma outra lista.

[/quote]

Oi javer,vc esta fazendo um controle de vendas,é isso…não entendi quando vc fala que os produtos são repetidos,acho que seria os iténs de venda,eles sim poderiam se repetir…ou estou errada…

desculpe :oops:

Na verdade são Ordens de Serviço, em cada Ordem de Serviço pode ter vários Serviços, só que cada uma delas tem que ser considerada como apenas um Produto na nota fiscal, por esse motivo tenho que fazer as acumulações de todos os Serviços.

O importante é que não estou conseguindo fazer ele acumular os valores e quando for CÓDIGO diferente eu salvar (adicionar em outra lista) e continuar.