【发布时间】:2017-03-06 22:33:34
【问题描述】:
假设你有一张这样的对象地图(尽管想象它更大):
List<Map<String, Object>>
[{
"rtype": "133",
"total": 2555
}, {
"rtype": "133",
"total": 5553
}, {
"rtype": "135",
"total": 100
}]
rtype=133,有两个!
我想用 Streams 做的是:
//result:
//Map<String, Object(or double)>
{"133": 2555+5553, "135": 100} // SUM() of the 133s
我有点难以理解 Collectors 和 groupBy 的工作原理,但我想这可能会用于这种情况。
在 Java 流 API 中编写此代码的正确方法是什么?
我很难找到与地图相似的示例(人们在他们的示例中更多地使用列表)
【问题讨论】:
-
@azurefrog 这是地图列表。
-
你必须至少尝试过,然后向我们展示你的挣扎,然后我们才能从那里继续。
-
看起来像 JSON... 使用 POJO 会更容易
-
是的,我在玩单元测试 .collect(Collectors.toMap( e -> e.get("total"), e -> e.get("rtype")));但求和可能需要 BinaryOperator 部分。
-
是的,我使用了很多 JSON 不同的客户端应用程序不会总是发送正确的类型。它始终是一个后跟小数点的数字,而不是十亿。
标签: java java-8 java-stream