Java封装Tree树

/**
 * @author admin
 * @描述
 * @创建人 admin
 * @创建时间 2022/6/1 17:10
 **/
@Data
public class Tree {
    private String id;

    private String pid;

    private String title;

    private List<Tree> child;
}

​​

/**
 * @描述
 * @创建人 admin
 * @创建时间 2022/6/1 17:05
 **/
public class TreeUtil {

    public static List<Tree> toTree(List<Tree> treeList, String pid) {
        List<Tree> retList = new ArrayList<>();
        for (Tree parent : treeList) {
            if (pid.equals(parent.getPid())) {
                retList.add(findChildren(parent, treeList));
            }
        }
        return retList;
    }

    private static Tree findChildren(Tree parent, List<Tree> treeList) {
        for (Tree child : treeList) {
            if (parent.getId().equals(child.getPid())) {
                if (parent.getChild() == null) {
       
Java 中,可以使用递归算法来快速封装形结构数据。以下是一个示例代码,展示如何使用递归算法来封装形结构数据: ```java public class TreeUtils { /** * 将数据列表封装形结构 * @param dataList 数据列表 * @param <T> 数据类型 * @return 形结构 */ public static <T extends TreeNode> List<T> buildTree(List<T> dataList) { List<T> treeList = new ArrayList<>(); // 构建根节点 for (T node : dataList) { if (node.getParentId() == null || node.getParentId().equals("")) { treeList.add(node); } } // 构建子节点 for (T node : treeList) { buildChildren(node, dataList); } return treeList; } /** * 递归构建子节点 * @param parentNode 父节点 * @param dataList 数据列表 * @param <T> 数据类型 */ private static <T extends TreeNode> void buildChildren(T parentNode, List<T> dataList) { for (T node : dataList) { if (node.getParentId() != null && node.getParentId().equals(parentNode.getId())) { parentNode.addChild(node); buildChildren(node, dataList); } } } } ``` 在上面的示例代码中,buildTree() 方法用于将数据列表封装形结构,buildChildren() 方法用于递归构建子节点。在构建形结构时,首先需要找到根节点,然后递归构建子节点。对于每个节点,可以通过 addChild() 方法将其添加到父节点的 children 列表中。 使用上述代码,可以快速地封装形结构数据,并且可以方便地遍历和操作形结构数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值