栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

树形结构工具类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

树形结构工具类

import com.yeyoo.government.server.open.common.domain.TreeDemo;
import lombok.Data;
import org.springframework.util.CollectionUtils;

import javax.swing.tree.TreeModel;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;


public class TreeUtil {


    
    public static List tree(List list){
        //存储根节点的菜单,即一级菜单
        List models =new ArrayList<>();
        //遍历所有数据,找到根节点菜单
        for (TreeUtil.TreeModel item: list) {
            if(StringUtils.equals("0", item.getParentCode())){
                //找到根节点菜单的时候,寻找这个根节点菜单下的子节点菜单。
                findChilds(item, list);
                //添加到根节点的列表中
                models.add(item);
            }
        }
        return models;
    }

    private static void findChilds(TreeModel root, List list){
        List childlist=new ArrayList<>();
        //遍历所有数据,找到是入参父节点的子节点的数据,然后加到childlist集合中。
        for (TreeUtil.TreeModel menu : list) {
            if (root.getCode().equals(menu.getParentCode())){
                childlist.add(menu);
            }
        }
        if (CollectionUtils.isEmpty(root.getChildren())) {
            //若子节点不存在,那么就不必再遍历子节点中的子节点了 直接返回。
            if(childlist.size()==0) {
                return;
            }
            //排序
            childlist.sort(Comparator.comparing(TreeUtil.TreeModel::getSort));
            //设置父节点的子节点列表
            root.setChildren(childlist);
        }
        //若子节点存在,接着递归调用该方法,寻找子节点的子节点。
        for (TreeUtil.TreeModel childs : root.getChildren()) {
            findChilds(childs, list);
        }
    }

    @Data
    public static class TreeModel {
        private String parentCode;
        private String code;
        private Integer sort;
        private List children;
    }

    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add(new TreeDemo(1, "tom", "0", "1", 1));
        list.add(new TreeDemo(2, "jack", "1", "2", 1));
        list.add(new TreeDemo(3, "rose", "1", "3", 2));
        List treeModels = TreeUtil.tree(list);
        System.out.println(treeModels.toString());
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678369.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号