首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 8 Stream中的递归是如何工作的?

在Java 8 Stream API中,没有直接提供递归的方法

下面是一个使用Java 8 Stream实现的递归树形数据结构遍历的例子:

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class RecursiveStreamExample {

    public static void main(String[] args) {
        // 构建示例数据
        Node root = new Node(1);
        root.getChildren().add(new Node(2));
        root.getChildren().add(new Node(3));
        root.getChildren().add(new Node(4));

        root.getChildren().get(0).getChildren().add(new Node(5));
        root.getChildren().get(0).getChildren().add(new Node(6));
        root.getChildren().get(1).getChildren().add(new Node(7));

        // 使用Stream和递归遍历树形数据结构
        List<Integer> result = traverse(root).stream().collect(Collectors.toList());
        System.out.println(result); // 输出: [1, 2, 5, 6, 3, 4, 7]
    }

    private static List<Node> traverse(Node node) {
        List<Node> result = new ArrayList<>();
        result.add(node);
        node.getChildren().stream().forEach(child -> result.addAll(traverse(child)));
        return result;
    }

    public static class Node {
        private int value;
        private List<Node> children;

        public Node(int value) {
            this.value = value;
            this.children = new ArrayList<>();
        }

        public int getValue() {
            return value;
        }

        public List<Node> getChildren() {
            return children;
        }
    }
}

在这个例子中,我们定义了一个Node类来表示树形结构的节点,并实现了traverse方法来递归遍历这个树形结构。traverse方法首先将当前节点添加到结果列表中,然后使用Stream API并行地遍历当前节点的所有子节点,并对每个子节点递归调用traverse方法,将结果合并到结果列表中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券