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

Sha*_*han 2 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));
Run Code Online (Sandbox Code Playgroud)

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

String id="CA";
List<ReportCount> getReportDetails(List<String> statusList, String id);
Run Code Online (Sandbox Code Playgroud)

有谁可以帮忙.谢谢

JB *_*zet 5

首先使用原始类型:

List<ReportCount> getReportDetails(List<String> statusList, String id);
Run Code Online (Sandbox Code Playgroud)

然后使用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))
Run Code Online (Sandbox Code Playgroud)

  • 你应该显示`someId`的虚拟声明,以强调它必须来自某个地方,例如`String someId =/*assign value*/;` (3认同)