繁体   English   中英

使用 java8 stream().map 传递两个参数来调用服务方法

[英]pass two parameters using java8 stream().map to call service method

我有以下与Java8正常工作的服务

List<ReportCount> getReportDetails(List<String> statusList);

statusList.add(Arrays.asList("SUCCESS"));
statusList.add(Arrays.asList("CANCELLED"));    
statusList.add(Arrays.asList("ON_HOLD","INPROGRESS"));

statusList.stream()
          .map(reportService::getReportDetails)
          .forEach(e -> reportMap.put("report_" + reportMap.size(), e));

如何使用上面的代码为下面的方法传递 1 个更多参数。

String id="CA";
List<ReportCount> getReportDetails(List<String> statusList, String id);

任何人都可以请帮忙。 谢谢

首先使用原始类型:

List<ReportCount> getReportDetails(List<String> statusList, String id);

然后使用 lambda 表达式:

List<List<String>> listOfStatusList = new ArrayList<>();
listOfStatusList.add(Arrays.asList("SUCCESS"));
listOfStatusList.add(Arrays.asList("CANCELLED"));    
listOfStatusList.add(Arrays.asList("ON_HOLD","INPROGRESS"));

String someId = ...;

listOfStatusList.stream()
                .map(statusList -> reportService.getReportDetails(statusList, someId))

另一种选择是:

1) 映射到 Object 数组,将原始数据添加为条目 0,然后向其他条目添加额外参数

2) 再次映射,这次使用Object 数组中的数据转换回第一次映射中添加的特定类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM