【发布时间】:2016-11-10 23:42:14
【问题描述】:
我想编写一个 Java 8 stream().collect 函数,该函数返回一个 List<T>,其中包含层次结构中节点的所有子节点和子节点。例如 TreeItem<T> getChildren() 和所有孩子的孩子等等,将其减少到一个列表。
顺便说一下,这是我作为通用方法的最终解决方案。非常有效,非常有用。
public static <T> Stream<T> treeStream(T root, boolean includeRoot, Function<T, Stream<? extends T>> nextChildren)
{
Stream<T> stream = nextChildren.apply(root).flatMap(child -> treeStream(child, true, nextChildren));
return includeRoot ? Stream.concat(Stream.ofNullable(root), stream) : stream;
}
【问题讨论】:
-
您能分享一下您的
TreeItem课程吗(或者至少分享一下它的相关方法)? -
@Mureinik "My" TreeItem 类是 javafx.scene.control.TreeItem。相关方法是getChildren()。
标签: java-8 java-stream hierarchical-data children collectors