Somatório de valores por data em List

6 respostas
E

Galera é o seguinte, eu recebo do banco de dados um List…Eu preciso saber como somo essas por data. Por exemplo:

codNota - Nota - DataCad
01 100 02/05/2008
02 100 02/05/2008
03 150 03/05/2008
04 130 03/05/2008

Quero fazer esta soma:

02/05/2008 - :200
03/05/2008 - :280

Por favor

6 Respostas

fiaux

Maneira simples que pensei. Pega a primeira data, percorre o resto perguntando se a data é igual aquela que você tem “na mão” e soma, pega a segunda data… e assim vai.
Se quiser, usa alguma outra estrutura para auxiilar.

E

fiaux:
Maneira simples que pensei. Pega a primeira data, percorre o resto perguntando se a data é igual aquela que você tem “na mão” e soma, pega a segunda data… e assim vai.
Se quiser, usa alguma outra estrutura para auxiilar.

Legal, mas vc viu que depois terei que mostrar o somatório de cada data…

Data - Somatório

fiaux

Beleza, usa a estrutura auxiliar, guarda em outra list, um map, sei lá.

E

Obrigado, mas poderia exemplificar por favor.

leandro.anjos

A melhor forma é usar uma hashMap. Ex:

HashMap<Date, Double> map = new HashMap<Date, Double>();
		
for (NotaVO nota : lista) {
	if(!map.containsKey(nota.getData())){
		map.put(nota.getData(), nota.getValor());
	}else{
		Double valorAtual = map.get(nota.getData());
		map.put(nota.getData(), nota.getValor() + valorAtual);
	}
}

Não sei como você pretende exibir isso, mas se você for exibir data e valor, possivelmente precisará criar um objeto de visualização e passar do map para uma lista desse objeto.

E
HashMap<Date, Double> map = new HashMap<Date, Double>();
		
for (NotaVO nota : lista) {
	if(!map.containsKey(nota.getData())){
		map.put(nota.getData(), nota.getValor());
	}else{
		Double valorAtual = map.get(nota.getData());
		map.put(nota.getData(), nota.getValor() + valorAtual);
	}
}

Lega cara, eu fiz um exemplo assim:

package tes2;

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

import teste.Dado;

public class Popula {
	
	public List<Dado>popula(){
		
		List<Dado>listaDados = new ArrayList<Dado>();
		
		Dado dado1 = new Dado();
		dado1.setData("01/05/2008");
		dado1.setValor(100);
		
		
		Dado dado2 = new Dado();
		dado2.setData("01/05/2008");
		dado2.setValor(100);		
		
		
		Dado dado3 = new Dado();
		dado3.setData("10/05/2008");
		dado3.setValor(200);
		
		
		Dado dado4 = new Dado();
		dado4.setData("10/05/2008");
		dado4.setValor(200);
		
		
		Dado dado5 = new Dado();
		dado5.setData("05/05/2008");
		dado5.setValor(300);		
		
		
		Dado dado6 = new Dado();
		dado6.setData("05/05/2008");
		dado6.setValor(300);	
		
		
		listaDados.add(dado1);
		listaDados.add(dado2);
		listaDados.add(dado3);
		listaDados.add(dado4);
		listaDados.add(dado5);
		listaDados.add(dado6);
		
		
		return listaDados;
	}
	
	public static void main(String[] args) {
		
		Popula obj = new Popula();
		
		List<Dado>listaDados = obj.popula();
		
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		
		for(Dado dado:listaDados){
			
			if(!map.containsKey(dado.getData())){
				map.put(dado.getData(), dado.getValor());				
			}
			else{
				
				Integer valorAtual = map.get(dado.getData());
				map.put(dado.getData(), dado.getValor()+ valorAtual);
				
			}
			
			
		}
		
		
	
		
		
		
	}
	
	

}

Agora como eu exibo, não entendi como vc falou.

Criado 5 de maio de 2008
Ultima resposta 5 de mai. de 2008
Respostas 6
Participantes 3