[Solved] Calculate the sum of a field contained in a collection that is contained in an other collection using Java Stream


Before mapToDouble you have to use flatMap like this:

return collection1.stream()
        .flatMap(cA -> cA.getCollectionB().stream())
        .mapToDouble(ObjectB::getSalary)
        .sum();

Or you can use map before the flatMap:

return collection1.stream()
        .map(ObjectA::getCollectionB)
        .flatMap(List::stream)
        .mapToDouble(ObjectB::getSalary)
        .sum();

Of you can use flatMapToDouble directly as @Naman mentioned:

return collection1.stream()
        .flatMapToDouble(
                cA -> cA.getCollectionB().stream().mapToDouble(ObjectB::getSalary)
        ).sum();

5

solved Calculate the sum of a field contained in a collection that is contained in an other collection using Java Stream