如何快速構建樹結構


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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM