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

时间:2018-01-19 07:08:23

标签: java lambda java-8 java-stream

我使用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);

有人可以帮忙吗?感谢

2 个答案:

答案 0 :(得分:5)

开始使用原始类型:

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 :(得分:0)

另一种选择是:

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

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