程序员的资源宝库

网站首页 > gitee 正文

如何快速构建树结构

sanyeah 2024-04-12 17:42:20 gitee 9 ℃ 0 评论

1.使用的hutool支持库的TreeUtil构建的树,确认maven pom文件有导入依赖

 

   <dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.3.10</version>
   </dependency>

  

2.定义基类,仅id和父节点id,节点最基础的属性

 

@Getter
@Setter
@NoArgsConstructor
public abstract class BaseTreeNodeDto {
    /**
     * 基类,必须有id和父节点id
     */
    protected String id;
    protected String parentId;
}

   

3.接入不同的数据(区域,部门等等)可以定义子类继承基类,定义特有属性。例如:

 一个idea插件lombok 巨无敌好用

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class DepartMentTreeNode extends BaseTreeNodeDto{

    public String rank;
    public String maxRole;
}

 

源码:

/**
     *
     * @param list 需要构建树的元素列表
     * @param root 根节点id,这里注意,根节点id一定要存在,树的构建从根节点开始
     * @return List<Tree<String>> 返回一个list结构,树的列表
     */
    public static List<Tree<String>> createTree(List list,String root) {
        TreeNodeConfig config = new TreeNodeConfig();
        config.setIdKey("id");
        //转换器,使用反射,对属性进行映射
        List<Tree<String>> build = TreeUtil.build(list, root, config, (object, tree) -> {
            Field[] fields = ReflectUtil.getFieldsDirectly(object.getClass(), true);
            for (Field field : fields) {
                String fieldName = field.getName();
                Object fieldValue = ReflectUtil.getFieldValue(object, field);
                tree.putExtra(fieldName, fieldValue);
            }
        });

        return build;
    }

  

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表