Map<String, Integer> result =
foos.stream()
.collect(
Collectors.groupingBy(
Foo::getName,
Collectors.summingInt(x -> x.getPrice() + x.getFees())
)
);
collect to a Map
with a Collectors::groupingBy
and a downstream collector : Collectors::summingInt
.
Or you can use toMap
:
foos.stream()
.collect(
Collectors.toMap(
Foo::getName,
x -> x.getPrice() + x.getFees(),
Integer::sum
)
);
This is rather easy to achieve if you just read the documentation a bit.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…