【发布时间】:2019-07-08 20:46:39
【问题描述】:
给定以下实体:
public class Parent extends {
private Long id;
private List<Child> children = new ArrayList<>();
}
我正在尝试学习如何使用 Java 8 Stream API 来扁平化一个 List<Parent>,每个都包含一个 List<Child>,并将 Child 的流传递给一个 void 方法。
例如:
List<Parent> parents = //..
schedules.stream()
.flatMap(Parent::getChildren)
.forEach(this::invoke);
这给出了错误:
方法参考中的错误返回类型:无法将 java.util.List 转换为 java.util.stream.Stream
【问题讨论】:
-
你 flatMap 到一个流。所以
.flatMap(parent -> parent.getChildren().stream()) -
另外我认为,如果第一个操作的子节点本身有任何子节点,则平面地图构造不会递归调用
getChildren。这只是一个级别的孩子。
标签: java java-stream