【发布时间】:2018-01-19 07:08:22
【问题描述】:
我有以下服务可以与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);
有人可以帮忙吗?谢谢
【问题讨论】:
-
使用 lambda 表达式。除非您的
statusList确实是列表列表,否则即使第一个参数也不匹配。 -
statusList 有状态列表
-
然后你想将整个列表,而不是每个元素,传递给 getReportDetails()。你为什么使用原始类型? getReportDetails()的第一个参数是什么类型?
-
statusList正在通过。上面的代码已经与getReportDetails(List statusList)一起工作。当我再添加 1 个参数时,无法在地图内部传递,它会抛出错误 -
除此之外,您不应该使用
forEach将元素放入地图中。请改用collect(Collectors.toMap(...))。
标签: java lambda java-8 java-stream