在开发中,我们经常需要返回树形结构数据去渲染或者是遍历,有时候删除某个数据也需要遍历得到所有猴子猴孙去(斩草除根),这时候可以递归去处理获取想要的集合。
据根节点和所有list去递归获取当个tree
private static List<CadPart> getChildren(CadPart treeEntity, List<CadPart> treeEntityList) {
List<CadPart> collect = treeEntityList.stream()
.filter(item -> item.getParentId().equals(treeEntity.getId()))//判断当前节点的父id是不是要设置节点的id
.map(item -> {
item.setChildren(getChildren(item, treeEntityList));//如果是 为其设置子节点 通过递归 为每个除了最外层节点的节点设置子节点
return item;
})
.collect(Collectors.toList());
return collect;
}
获取数据的所有tree
public List<CadPart> getTree(List<CadPart> treeList){
List<CadPart> collect = treeList.stream()
.filter(item -> item.getParentId() == 0)//构造最外层节点,即id=0的节点
.map(item -> {
item.setChildren(getChildren(item, treeList));//id=0的节点就为他设置孩子节点
return item;
}).
collect(Collectors.toList());
return collect;
}
-
结构树数据
-
前端渲染效果