有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

筛选如何将映射添加到Java流的foreach中

我以前写过以下内容:

          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并将原始的map、filter和forEach方法放在 .map(d -> cli.getItem(d.getValue()))下,我该怎么做呢

谢谢


共 (1) 个答案

  1. # 1 楼答案

    这是^{}的一个用例:

    events.stream()
        .flatMap(d -> cli.getItems(d.getValue()).stream())
        // everything below stays the same
    

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