TreeBuilder.java 840 字节
package com.skua.tool.util;

import com.skua.modules.common.vo.TreeNodeVO;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @auther kangwei
 * @create 2025-01-15-10:07
 */
public class TreeBuilder {
    //构建树结构
    public static List<TreeNodeVO> buildTree(List<TreeNodeVO> nodes) {
        Map<String, TreeNodeVO> nodeMap = nodes.stream().collect(Collectors.toMap(TreeNodeVO::getId, node -> node));

        List<TreeNodeVO> roots = new ArrayList<>();
        TreeNodeVO parent = null;
        for (TreeNodeVO node : nodes) {
            parent = nodeMap.get(node.getParentId());
            if (parent != null) {
                parent.addChild(node);
            } else {
                roots.add(node);
            }
        }
        return roots;
    }
}