java8 tree转list
时间: 2023-06-05 12:47:36 浏览: 136
Java 8提供了非常方便的方法来将一个树转换成一个列表。我们可以使用Stream API和递归算法来实现这一过程。以下是一个简单的示例:
1. 首先,我们需要定义一个树节点类:
```java
class TreeNode {
int value;
List<TreeNode> children;
// 构造函数和getter/setter方法省略
}
```
2. 然后,我们可以在树节点类中添加一个转换方法:
```java
public Stream<TreeNode> flatten() {
// 将当前节点添加到流中
Stream<TreeNode> stream = Stream.of(this);
// 递归调用子节点的flatten方法,并将结果合并到流中
if (children != null) {
stream = Stream.concat(stream, children.stream().flatMap(TreeNode::flatten));
}
return stream;
}
```
此方法将当前节点包装成一个流,并递归将子节点的流合并到当前流中。注意,我们使用了Stream.concat方法来合并流。
3. 最后,我们可以在客户端代码中调用该方法来生成一个列表:
```java
List<TreeNode> treeList = rootNode.flatten().collect(Collectors.toList());
```
该方法返回的流可以使用collect方法转换为一个列表。需要注意的是,我们使用了Stream API中的flatMap方法来平铺节点流。
这是一个简单的Java 8 tree转list的示例。使用Java 8的Stream API可以使代码更加清晰、简洁和可读。
阅读全文