• 如何快速构建树结构


    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;
        }
    

      

  • 相关阅读:
    多线程之生产者和消费者模式
    python多线程之线程同步--锁
    python多线程之动态确定线程数
    python多线程之循环,调用函数等
    V8 引擎是如何工作的?
    AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解
    字节码
    V8 引擎是如何工作的?
    JavaScript arguments对象
    V8 是怎么跑起来的 —— V8 中的对象表示
  • 原文地址:https://www.cnblogs.com/blogwangwang/p/14920137.html
Copyright © 2020-2023  润新知