java - 终端流操作,在Java 8中以map作为输入

标签 java java-8

我们是否有一些以函数作为输入的终端函数?我有一个内部循环,它返回一个响应,如下面的示例所示。我不想将响应放在外部列表中,而是希望内部循环收集并发送响应。

    List<A> consignments = Lists.emptyList();
    IntStream.range(0, days)
            .mapToObj(startDate::plusDays)
            .forEach(day -> IntStream.range(0, hours)
                    .forEach(hour -> consignments.add(myfunction()))
            );

我想要这样的东西:

    List<A> consignments = IntStream.range(0, days)
            .mapToObj(startDate::plusDays)
            .forEach(day -> IntStream.range(0, hours)
                    .mapToObj(hour -> myFunction())
                    .collect(toList()));

由于 forEach 是一个消费者,所以这不会按原样工作,所以我们是否有一些简单的方法来实现它,而我缺少这种方法?

最佳答案

如果我正确理解你的意图,flatMap 应该可以工作:

List<A> consignments = 
    IntStream.range(0, days)
             .mapToObj(startDate::plusDays)
             .flatMap(day -> IntStream.range(0, hours)
                                      .mapToObj(hour -> myFunction()))
             .collect(toList());

关于java - 终端流操作,在Java 8中以map作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46445977/

相关文章:

Java:我想从文件中逐字符读取,并将每个字符保存到最大大小为 10 的数组中

java - 如何在不双击JNLP的情况下让java web start自动启动

java - 带lambda的热交换代码失败,表明该方法无法删除

mysql - ZoneOffset 的 ID 无效

java - Glassfish 服务器不适用于 JDK 8

java - 如何调用不在默认包中的 Bean 类

java - 将 jar 添加到简单 java 项目后出现 ClassDefNotFoundException

java - 使用 Stream API Java 8 进行嵌套对象转换

java - .exceptionally()是否会捕获嵌套的Future中抛出的异常?或者在哪里放置.exceptionally()是正确的

java - 在 ofEpochMilli 和 ofEpochSecond 之间切换