gpt4 book ai didi

java - 平面化 n 阶树结构 : Java Streams

转载 作者:行者123 更新时间:2023-12-02 10:23:03 26 4
gpt4 key购买 nike

假设我有一个非二叉树结构(每个节点可能有 n 子节点)。从这个意义上说,使用 java streams 将整个树展平为单个列表的好方法是什么?

rootNode.getChildren().stream()
.flatMap(node -> node.getChildren().stream())
.collect(Collectors.toList());

这个示例是我对单级展平所做的事情,但仍然不包括根节点(这是所需的)。

最佳答案

让我们调用您的类Node。在该类中,添加方法(假设 getChildren() 永远不会返回 null):

public Stream<Node> streamAll(){
return Stream.concat(Stream.of(this), getChildren().stream().flatMap(Node::streamAll));
}

然后要获取列表,您只需调用

rootNode.streamAll().collect(Collectors.toList());

或者从 java 16 开始

rootNode.streamAll().toList();

关于java - 平面化 n 阶树结构 : Java Streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54187121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com