java stream 获取集合中的上级节点
时间: 2023-06-18 14:02:07 浏览: 177
如果你有一个存储节点信息的集合,并且每个节点都有一个 parent 属性指向它的上级节点,你可以使用 Java 8 的 Stream API 来获取集合中的所有上级节点。以下是一个示例代码:
```java
public List<Node> getParents(List<Node> nodes, Node node) {
List<Node> parents = new ArrayList<>();
Node parent = nodes.stream()
.filter(n -> n.getId() == node.getParentId())
.findFirst()
.orElse(null);
if (parent != null) {
parents.add(parent);
parents.addAll(getParents(nodes, parent));
}
return parents;
}
```
上面的代码中,`getParents` 方法接收一个节点集合和一个节点作为参数,然后返回一个包含所有上级节点的列表。在方法中,我们首先使用 `Stream.filter` 方法过滤出与给定节点的 `parent` 属性相同的节点,然后使用 `Stream.findFirst` 方法获取第一个匹配的节点。如果找到了匹配的节点,我们将其添加到 `parents` 列表中,并递归调用 `getParents` 方法以获取它的上级节点。最后,我们返回 `parents` 列表。
请注意,上面的代码假设节点的 `id` 和 `parentId` 属性都是整数类型,你需要根据实际情况进行修改。
阅读全文