【发布时间】:2016-11-16 17:05:16
【问题描述】:
在我目前正在进行的项目中,我们有三个嵌套 for 循环的构造:
List<OutputDataType> resultList = new ArrayList<>();
for (OrgStructureEntity product : products) {
for (String region : regions) {
for (SalesType salesType : SalesType.values()) {
resultList.addAll(new SalesRequest(getConnection(),
product.getProductMainGroup(), product.getSbu(), planYear, currentPeriod, region, salesType,
exchangeRates).calculateSalesKpis());
}
}
}
产品和地区都是集合。 resultList 是一个带有“OutputDataType”对象的 ArrayList。 calculateSalesKpis() 方法还返回“OutputDataType”对象的列表。 所有这些对象都应该添加到结果列表中。我想用并行流来做这一切以使其更快,但我没有比这更进一步:
products.stream()
.map(product -> regions.stream()
.map(region -> Arrays.stream(SalesType.values())
.map(salesType -> new SalesRequest(getConnection(),
product.getProductMainGroup(), product.getSbu(), planYear, currentPeriod, region, salesType,
exchangeRates).calculateSalesKpis())))
.
我现在不知道如何将其全部放入结果列表以及如何正确关闭流。 我希望你能帮助我:)
【问题讨论】:
-
使用 .collect(Collectors.toList()) 终端操作将结果收集到列表中
-
你的意思是最后一个点在哪里?不幸的是,这不起作用......
标签: java foreach java-8 java-stream flatmap