java stream api 对象复制_java – 使用Stream API的对象的Sum属性

我目前有以下情况:

我有一个Report对象,可以包含多个Query对象. Query对象具有以下属性:Optional< Filter> comparisonFilter,Optional< String> filterChoice和int queryOutput.

并非每个查询都有比较过滤器,所以我首先检查一下.然后,我确保我得到了特定过滤器的查询(这不是问题,所以我不会详细讨论).每个过滤器都有一些选择,其中选择的数量是可变的.

以下是输入的示例(这些Query对象都具有相同的comparisonFilter):

Query 1 -- Choice: 'First' -- Output: 10

Query 1 -- Choice: 'First' -- Output: 5

Query 1 -- Choice: 'Second' -- Output: 25

Query 1 -- Choice: 'Third' -- Output: 10

现在,我想总结每个唯一选择的查询输出.我目前有这个代码:

report

.getQueries()

.stream()

.filter(q -> q.getComparisonFilter().isPresent())

.filter(q -> q.getComparisonFilter().get().equals(view.getFilter().get()))

.forEach(query -> {

//Sum the query outputs per choice

});

我可以通过创建Map< String,Integer>来完成此操作,其中键是选项,值是查询输入.但是我需要再次遍历Map以使用某些值(这在这里并不重要).

输出应该是这样的:

Choice: 'First' -- Summed Output: 15

Choice: 'Second' -- Summed Output: 25

Choice: 'Third' -- Summed Output: 10

但是我想在流中的forEach中直接使用这个’Summed Output’,但是如果这不可能或不再实用,我就可以了.

我想这样做’Java 8’方式,但我似乎无法弄清楚如何.

所以我的问题是:使用新的Stream API可以缩短时间吗?

注意:如果有人对如何使这个问题更一般(可能是更好的标题和一些概括)有一些想法,请告诉我!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值