zoukankan      html  css  js  c++  java
  • 树级节点封装工具类

    实体类

    package com.ruoyi.common.core.domain;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author: 程鹏
     * @date: 2021-06-28 16:44
     * @Description:  树形组件通用对象
     */
    public class TreeItem implements Serializable {
        private String id;
        private String pId;
        private String name;
        private boolean checked;
        private String title;
        private List<TreeItem> children = new ArrayList<>();
    
        public TreeItem(String id, String pId, String name, boolean checked, String title) {
            this.id = id;
            this.pId = pId;
            this.name = name;
            this.checked = checked;
            this.title = title;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getpId() {
            return pId;
        }
    
        public void setpId(String pId) {
            this.pId = pId;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public boolean isChecked() {
            return checked;
        }
    
        public void setChecked(boolean checked) {
            this.checked = checked;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public List<TreeItem> getChildren() {
            return children;
        }
    
        public void setChildren(List<TreeItem> children) {
            this.children = children;
        }
    }
    

    工具类

    package com.ruoyi.common.utils;
    
    
    import com.ruoyi.common.core.domain.TreeItem;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.stream.Collectors;
    
    /**
     * @author: 程鹏
     * @date: 2021-06-28 16:37
     * @Description: 树形组件数据封装工具   多个父节点
     */
    public class TreeUtil {
    
        private volatile static TreeUtil INSTANCE;
    
        // 构造方法私有化
        private TreeUtil() {
    
        }
        // 获取树工具单例 (DCL单例)
        public static TreeUtil getInstance() {
            if (INSTANCE == null) {
                synchronized (TreeUtil.class) {
                    if (INSTANCE == null) {
                        INSTANCE = new TreeUtil();
                    }
                }
            }
            return INSTANCE;
        }
        public TreeItem enquireTree(List<TreeItem> treeItemList) {
            if (treeItemList.isEmpty()) {
                return null;
            }
            // 过滤空对象
            List<TreeItem> treeItems = treeItemList.stream().filter(treeItem -> treeItem != null).collect(Collectors.toList());
            // 存储 id treeItem
            HashMap<String, TreeItem> itemMap = new HashMap<>();
            treeItems.forEach(treeItem -> {
                // k值为 树节点几点id
                itemMap.put(treeItem.getId(), treeItem);
            });
            // 声明一个变量存放根节点
            TreeItem root = null;
            // 遍历父节点
            // 数据组装
            for (TreeItem treeItem : treeItems) {
                String pid = treeItem.getpId();
                if ("0".equals(pid)) {
                    // 说明该节点为根节点
                    root = treeItem;
                    continue;
                }
                // 获取父节点ip
                TreeItem parent = itemMap.get(pid);
                parent.getChildren().add(treeItem);
            }
            return root;
        }
    
    
    }
    
  • 相关阅读:
    [转]VS 2008 新特性一览
    [转]WCF开发框架形成之旅WCF的几种寄宿方式
    [转]失业的程序员(五):商战之前
    [ 转]Android折叠列表 ExpandableList
    [转]extjs入门——开始
    [转]Jquery操作select
    Ext JS 下载 及 是否收费
    [转]WCF服务的批量寄宿
    [转]Android高手进阶教程(十七)之Android中Intent传递对象的两种方法(Serializable,Parcelable)!
    mat之三PermGen Metaspace永久代内存分析
  • 原文地址:https://www.cnblogs.com/pengcool/p/15611075.html
Copyright © 2011-2022 走看看