我目前有以下情况:

我有一个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可以缩短时间吗?

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

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐