package cn.gistack.common.utils; import cn.gistack.common.node.TreeNode; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * node tree 工具类 * @author zhongrj * @since 2021-11-23 */ public class NodeTreeUtil { /** * map 转 tree 组织机构(父子id不会重复的情况,数据查询来自同一个表) * @param treeMap * @return */ public static List getNodeTree(Map treeMap){ List tree = new ArrayList<>(); if (treeMap.size() > 1) { treeMap.forEach((id, treeNode) -> { if (treeMap.containsKey(treeNode.getParentId())) { treeMap.get(treeNode.getParentId()).getChildren().add(treeNode); } else { tree.add(treeNode); } }); } return tree; } /** * list 转 tree 组织机构 * @param parentList * @param childrenList * @return */ public static List getNodeTree(List parentList,List childrenList){ // 遍历 for (TreeNode parentNode : parentList) { // 判断是否有孩子 if (parentNode.getHasChildren()) { List tree = new ArrayList<>(); // 遍历子集合 for (TreeNode childrenNode : childrenList) { if (parentNode.getId().equals(childrenNode.getParentId())) { tree.add(childrenNode); } } // 设置孩子节点 parentNode.setChildren(tree); } } return parentList; } }