【问题标题】:how to add map into foreach of Java stream如何将地图添加到Java流的foreach中
【发布时间】:2020-12-23 05:45:15
【问题描述】:

我之前写过以下内容:

          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())) 下,我该怎么做?

谢谢!

【问题讨论】:

  • System.out.println(String.format(r.value)) 的意义何在?首先,println(String.format(…)) 可以替换为 printf(…),其次,如果您没有任何格式化参数,则可以使用普通的 println(r.value),而无需调用昂贵的格式化框架。
  • 这实际上是另外一回事,我还有一些其他的方法调用和东西,但不想分散人们的注意力。但好点

标签: java filter foreach java-8 java-stream


【解决方案1】:

这是flatMap的一个用例:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多