private List<WorkPeriodResp> getChildren(WorkPeriodResp root, List<WorkPeriodResp> all) { return all.stream().filter(m -> Objects.equals(m.getParentCode(), root.getNodeCode())).peek( (m) -> m.setChildren(getChildren(m, all)) ).collect(Collectors.toList()); }
时间: 2024-04-20 09:25:59 浏览: 71
Jdom解析嵌套XML<一>
这段代码实现了一个递归函数 `getChildren`,用于获取给定根节点下的所有子节点。
函数接受两个参数:`root` 表示根节点,`all` 表示包含所有节点的列表。
函数使用 Java 8 的 Stream API 对 `all` 列表进行过滤操作,保留满足条件的节点。条件判断是通过 `Objects.equals(m.getParentCode(), root.getNodeCode())` 实现的,即判断节点的父节点代码是否等于根节点的代码。
在过滤之后,使用 `peek` 方法对每个满足条件的节点进行操作。操作中调用了递归函数 `getChildren(m, all)`,即传入当前节点和所有节点列表,以获取当前节点的子节点列表。然后,将子节点列表设置为当前节点的子节点。
最后,使用 `collect` 方法将过滤和操作后的节点列表收集起来,并作为结果返回。
综上所述,这段代码的作用是根据给定的根节点和包含所有节点的列表,递归地获取根节点下的所有子节点,并返回一个包含所有子节点的列表。
阅读全文