Summe von Property innerhalb einer Liste via Lambda

beta20

Top Contributor
Hallo,

ich bin noch recht neu im Gebiet Lambda Ausdrücke.

Ich möchte gerne eine Summe bekommen von einer Property innerhalb einer Klasse:

Klasse: NetworkRequestItem
- ID
- netPrice

Nun habe ich eine Liste:
List<NetworkRequestItem> networkRequestItemList

Ich möchte nun ein double bekommen, von allen netPrice von allen Objekten der Liste.

Ich versuche gerade sowas, aber das stimmt noch nicht ganz:
double total = networkRequestItemList.stream().flatMapToDouble(c -> c.getPriceNet()).sum();

Wie löse ich das? Und wie lerne ich am Besten diese Ausdrücke?

EDIT:
Stimmt das so:

double priceTotalNet = networkRequestItemList.stream().map(x -> x.getPriceNet())
.collect(Collectors.summingDouble(Double::doubleValue));
 
Du hattest es schon fast. Allerdings solltest du hier mapToDouble und nicht flatMapToDouble verwenden.
Java:
double total = networkRequestItemList.stream().mapToDouble(NetworkRequestItem::getPriceNet).sum();
"flatMap" bedeutet immer, dass du von einem T zu einem Stream<R> mapst bzw. in deinem Fall von einem NetworkRequestItem zu einem DoubleStream, aber du willst ja einfach jedes NetworkRequestItem zu einem einzigen double mappen.
 

Zurück
Oben