我之前写过以下内容:
events.stream()
.map(d -> cli.getItem(d.getValue()))
.map(event -> Report.builder()
.id(event.getId())
.value(event.getValue())
.build())
.filter(r -> !excludesSet.contains(r.value))
.forEach(r -> {
System.out.println(String.format(r.value);
});
getItem
在这里返回Item
,我刚刚将getItem
更新为getItems
,后者返回List<Item>
,并且希望为每个项目保留一些逻辑。这意味着我需要创建一个foreach
,并将原始映射、过滤器和forEach方法放在.map(d -> cli.getItem(d.getValue()))
下,我该怎么做?
谢谢!
这是flatMap
:的一个用例
events.stream()
.flatMap(d -> cli.getItems(d.getValue()).stream())
// everything below stays the same
flatMap
允许您将流中的每个项目映射到多个项目。