如何在Java流的foreach中添加map

如何在Java流的foreach中添加map,java,filter,foreach,java-8,java-stream,Java,Filter,Foreach,Java 8,Java Stream,我以前写过以下内容: events.stream() .map(d -> cli.getItem(d.getValue())) .map(event -> Report.builder() .id(event.getId()) .value(event.getValue())

我以前写过以下内容:

          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,它返回列表,并希望为每个项保留一些逻辑。这意味着我需要创建一个foreach,并将原始的map、filter和foreach方法放在.mapd->cli.getItemd.getValue下,我该如何做呢

谢谢

这是一个用于:

flatMap允许您将流中的每个项目映射到多个项目。

这是一个用于:


flatMap允许您将流中的每个项目映射到多个项目。

System.out.PrintLString.formatr.value的作用是什么?首先,printlnString.format…可以替换为printf…,其次,如果您没有任何参数进行格式化,您可以使用一个普通的printlnr.value,而不需要调用昂贵的格式化框架。这是另外一件事。实际上,我还有一些其他方法调用和其他事情,但不想分散人们的注意力。但是好的方面System.out.printlnString.formatr.value有什么意义?首先,printlnString.format…可以替换为printf…,其次,如果您没有任何参数进行格式化,您可以使用一个普通的printlnr.value,而不需要调用昂贵的格式化框架。这是另外一件事。实际上,我还有一些其他方法调用和其他事情,但不想分散人们的注意力。但这一点很好
events.stream()
    .flatMap(d -> cli.getItems(d.getValue()).stream())
    // everything below stays the same