首页 > 解决方案 > 如何创建包含所有特定对象总和的地图?

问题描述

我有一个对象:

class Sample
{
    String currency;
    String amount;
}

我想要一个输出地图,其中包含特定货币的所有对象的总和。

例子-

指针。我一直在使用以下代码,但它没有按我的预期工作。您可以将此代码用作参考:

Map<String, Double> finalResult = samples
        .stream()
        .collect(Collectors.toMap(
                Sample::getCurrency,
                e -> e.getAmount()
                      .stream()
                      .sum()));

标签: javacollectionsjava-8java-stream

解决方案


您需要使用groupingBywithsummingDouble和 not toMap

Map<String, Double> finalResult = samples
        .stream()
        .collect(Collectors.groupingBy(
                Sample::getCurrency,
                Collectors.summingDouble(Sample::getAmount)
        ));

我认为金额是类型Double,您的示例不正确(String amount;


推荐阅读