TreeUtil---生成树状结构数据
/** * @description: * @author: qiuqingxin * @create: 2020-08-04 13:49 **/ public class TreeNodeUtil { public static List<BsOrganizationVo> tree; /** * 获取根节点 * @return */ private static List<BsOrganizationVo> getRootNode(){ List<Long> orgIds = tree.stream().map(BsOrganizationVo::getOrgId).collect(Collectors.toList()); List<BsOrganizationVo> rootNode=new ArrayList<>(); for (BsOrganizationVo bsOrganizationVo : tree) { //上级为null或者Pid不存在orgId集合中为根节点 if (null==bsOrganizationVo.getParentId()||!orgIds.contains(bsOrganizationVo.getParentId())){ rootNode.add(bsOrganizationVo); } } return rootNode; } private static void getChildren(BsOrganizationVo bsOrganizationVo){ List<BsOrganizationVo> childNodesA = getChildNodesA(bsOrganizationVo); if (!childNodesA.isEmpty()){ for (BsOrganizationVo organizationVo : childNodesA) { getChildren(organizationVo); } bsOrganizationVo.setChildren(childNodesA); } } private static List<BsOrganizationVo> getChildNodesA(BsOrganizationVo bsOrganizationVo){ List<BsOrganizationVo> childNodesA=new ArrayList<>(); for (BsOrganizationVo organizationVo : tree) { if (bsOrganizationVo.getOrgId().equals(organizationVo.getParentId())){ childNodesA.add(organizationVo); } } return childNodesA; } public static void setTree(List<BsOrganizationVo> lists){ if (tree.isEmpty()){ return; } //1.获取根节点 List<BsOrganizationVo> rootNode=getRootNode(); for (BsOrganizationVo bsOrganizationVo : rootNode) { getChildren(bsOrganizationVo); lists.add(bsOrganizationVo); } //遍历根节点 //递归查询每一个根节点的子节点 } }