java - 如何创建包含所有特定对象总和的地图?
问题描述
我有一个对象:
class Sample
{
String currency;
String amount;
}
我想要一个输出地图,其中包含特定货币的所有对象的总和。
例子-
- 40 卢比
- 80 美元
- 20 欧元
指针。我一直在使用以下代码,但它没有按我的预期工作。您可以将此代码用作参考:
Map<String, Double> finalResult = samples
.stream()
.collect(Collectors.toMap(
Sample::getCurrency,
e -> e.getAmount()
.stream()
.sum()));
解决方案
您需要使用groupingBy
withsummingDouble
和 not toMap
:
Map<String, Double> finalResult = samples
.stream()
.collect(Collectors.groupingBy(
Sample::getCurrency,
Collectors.summingDouble(Sample::getAmount)
));
我认为金额是类型Double
,您的示例不正确(String amount;
)
推荐阅读
- docker - AlpineOS 上的 Nginx 配置命令
- excel - Excel 中的动态数组不会溢出
- java - Spring Hibernate 5.4.22.Final:javax.persistence.TransactionRequiredException:升级spring boot时没有事务正在进行
- node.js - MongooseError [MissingSchemaError]:尚未为模型“ModuleDetail”注册模式
- c++ - 获取用户输入并存储到具有自定义长度的数组中(C++)
- python - 如何使用 Python 过滤 Pandas 数据框中所有或部分行值大于 0 的列?
- r - 提取非特定名称表单字符串地址,忽略特定模式
- javascript - 使用 jQuery 向 grails 输入字段字段添加属性
- java - 使用 Java 向 Google 表格添加数据时出现 AuthenticationException 错误
- javascript - 鼠标悬停时仅显示当前卡片悬停效果