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