要将一个List转换为Tree结构,需要确定Tree的根节点以及每个节点的子节点。以下是一个示例代码,将List转换为Tree结构:

public class BusinessDomainPo {
    private int id;
    private int parentId;
    private String name;
    // 其他属性...

    // 省略构造方法、getter和setter...
}

public class TreeNode {
    private BusinessDomainPo data;
    private List<TreeNode> children;

    // 省略构造方法、getter和setter...
}

public class ListToTreeConverter {
    public TreeNode convert(List<BusinessDomainPo> list) {
        Map<Integer, TreeNode> nodeMap = new HashMap<>();
        TreeNode root = null;

        // 遍历List,创建TreeNode并放入节点Map中
        for (BusinessDomainPo po : list) {
            TreeNode node = new TreeNode();
            node.setData(po);
            node.setChildren(new ArrayList<>());

            nodeMap.put(po.getId(), node);

            if (po.getParentId() == 0) {
                // 如果parentId为0,则为根节点
                root = node;
            }
        }

        // 遍历List,将每个节点添加到对应父节点的children列表中
        for (BusinessDomainPo po : list) {
            if (po.getParentId() != 0) {
                TreeNode parent = nodeMap.get(po.getParentId());
                if (parent != null) {
                    parent.getChildren().add(nodeMap.get(po.getId()));
                }
            }
        }

        return root;
    }
}

使用示例:

List<BusinessDomainPo> list = new ArrayList<>();
// 添加业务领域数据到list...

ListToTreeConverter converter = new ListToTreeConverter();
TreeNode root = converter.convert(list);

通过上述代码,可以将List转换为具有树结构的TreeNode对象,其中每个TreeNode对象包含一个BusinessDomainPo对象和其子节点列表

ListBusinessDomainPo List转为Tree结构

原文地址: https://www.cveoy.top/t/topic/iXmw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录