java使用stream根据子节点筛选出所有的父节点
时间: 2024-09-11 14:12:52 浏览: 65
java使用stream对日期排序
在Java中,如果你想要通过Stream API根据子节点筛选出所有的父节点,通常是在处理树形结构的数据时。假设你有一个`Node`类代表树的一个节点,每个节点有`children`属性存储其子节点列表,你可以这样做:
```java
class Node {
String value;
List<Node> children;
// getters and setters...
}
// 假设你有一个Node类型的List,比如nodes
List<Node> nodes = ...; // 树形数据
List<Node> parentNodes = nodes.stream()
.filter(node -> !node.children.isEmpty()) // 筛选出有子节点的节点
.map(Node::getParent) // 假设每个Node有一个getParent()方法返回其父节点
.distinct() // 防止重复,如果父节点可以有多次添加到子节点的list中
.collect(Collectors.toList()); // 将结果收集到一个新的列表中
```
这里我们首先过滤出那些有子节点的节点,然后对每个符合条件的节点调用`getParent()`方法获取其父节点,再用`distinct()`去除重复,最后将结果收集到一个新的列表中。
阅读全文