1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
class Element14{
public int ID;
public double prix;
public String nom;
public Element14(int iD, double prix, String nom) {
super();
ID = iD;
this.prix = prix;
this.nom = nom;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public double getPrix() {
return prix;
}
public void setPrix(double prix) {
this.prix = prix;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
};
Collection<Element14> datas = Arrays.asList(
new Element14(20318880, 000006.00f, "TRAIN"),
new Element14(20312350, 000008.00f, "VOITURE"),
new Element14(20318880, 000009.00f, "TRAIN")
);
//Groupe d'abord par nom pour creer un list de chaque type de nom. Ensuite pour chacune des liste, effectue une somme de la variable "prix" et place le resultat dans la map finale
Map<String, Double> prixCumule = datas.stream().collect(Collectors.groupingBy(Element14::getNom, Collectors.summingDouble(Element14::getPrix)));
// Meme chose mais avec le tri avant (qui pour moi ne sert a rien dans ce cas ci)
//Map<String, Double> prixCumule = datas.stream().sorted((Element14 a, Element14 b) -> a.nom.compareTo(b.nom)).collect(Collectors.groupingBy(Element14::getNom, Collectors.summingDouble(Element14::getPrix)));
// Puis faire quelques choses des données.
prixCumule.forEach((u,k) -> System.out.println(u+ " Cumul prix = "+k)); |
Partager