Iterar lista totalizando valores

Pessoal,

no meu código eu estou trazendo uma collection com vários objetos(pagamentoVO) dentro.

Nesse VO que está vindo na collection, um dos atributos é o campo “valor original” e “idMorador”.

O que eu quero fazer é o seguinte:

totalizar o “valor original” por moradores. Ou seja, quando eu itero a lista e vejo que o idMorador mudou, eu quero guardar esse valor para apresentar na jsp.

meu código está assim

/** Trazendo a lista carregada de PagamentoVO*/
listaInadimplenciaGeral = facade.listaGeralInadimplencia(pagamentoVO);

Iterator it = listaInadimplenciaGeral.iterator();   

double totalGeral = 0.0;

double totalMorador = 0.0;

/**variavel que irá fazer o controle de moradores para calcular seu total */
      int mor = 0;
      int aux = 0;
      
      while(it.hasNext())
      {
        pagamentoVO = (PagamentoVO)it.next();    
          
        double valor = pagamentoVO.getPagamentoBean().getValorOriginal();    
        mor = pagamentoVO.getPagamentoBean().getMoradorBean().getIdMorador();
       
        if(mor != aux)
        {
          totalMorador = 0.0;
          aux = mor;
        }

        /**Totaliza o valor da inadimplência do morador */
        totalMorador+= valor;
        
        /**Totaliza o valor da inadimplência geral */
        totalGeral+= valor;   


request.setAttribute(Form.TOTAL_GERAL, String.valueOf(totalGeral));
      request.setAttribute(Form.TOTAL_GERAL_MORADOR, String.valueOf(totalMorador));
      request.setAttribute(Form.LISTA_INADIMPLENCIA, listaInadimplenciaGeral);

Até aqui, tudo acontece como é para acontecer, exceto a variavel “totalMorador” que me apresenta somente o total do ultimo morador da lista…sendo que todo morador tem seu total.

Pensei em fazer o seguinte:

Toda vez que verificar se o morador é diferente, criar uma collection.
E qdo entrar no Iterator, setar todos os valores no VO e adicionar o VO na collection. Porque dessa forma eu trabalharia sem problemas na jsp.

Mas agora vem a minha dúvida:

Esse trabalhão todo não vai ser prejudicial quando a consulta me retornar uma lista mto carregada?

Não existe outra forma de pegar o valor total do morador quando o id for diferente?

Agradeço quem puder me ajudar…

Nao sei se entendi bem o teu problema (é bem provavel que nao :lol: )
mas voce poderia usar um Map pra guardar as informacoes de total de cada morador separadinho, aí quando voce for pegar o valor do morador X, se ele nao tiver no Map vc busca e coloca o valor no Map, senao simplesmente voce devolve o valor que voce ja calculou antes. Aí tem que ver com que frequencia esses valores precisam ser atualizados, e com isso voce ve também em que escopo voce guarda esse seu Map.

gilliard,

eu pensei em usar o map, mas pelo q vc ta me dizendo…eu vou ter q usar scriptlet na jsp…

e essa não eh a minha intenção, sendo que eu estou usando JSTL

nao quero misturar as duas coisas.

Nao precisa de scriplet nao, vc consegue acessar um map com jstl (pelo menos dentro do que me lembro :lol: )

voce acessa seu map ± assim

<c:forEach items = "${clientes}" var="cliente">
  <c:out value="${seuMap[cliente].nome}" />
</c:forEach>

brigadao Gilliard

mas eu consegui resolver de outra maneira…ataquei para o lado da collection mesmo…

iterei uma lista para buscar os valores (q eu precisava somar), realizei o calculo e adicionei elas em outra lista…para pegar na jsp…

como eu nao preciso desse campo em nenhum outro lugar do meu sistema, nao criei ele no vo, e para fazer isso…eu iterava uma lista dentro a outra.

Deu certo já…

valew