zoukankan      html  css  js  c++  java
  • 【Java】树状节点结构的数据

    数据库的菜单,权限表是具有多层级结构,有ID和PARENT_ID两个关键性的字段

    通过PARENT_ID和ID相等构建层级结构:

    然后需要在Java中构建出层级的数据结构,然后输出成JSON返回给前端渲染:

    1、构建Tree的结构体:

    字段ID和PARENT_ID,然后和一个必须初始化的List集合、

    其他的字段就是要显示的东西,这些随意加

    public class WechatOrgTreeDto {private Integer id;
        private Integer parentId;
        private String name;
        private List<WechatOrgTreeDto> list = new ArrayList<>();
    
        public WechatOrgTreeDto(Integer id, Integer parentId, String name) {
            this.id = id;
            this.parentId = parentId;
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Integer getParentId() {
            return parentId;
        }
    
        public void setParentId(Integer parentId) {
            this.parentId = parentId;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<WechatOrgTreeDto> getList() {
            return list;
        }
    
        public void setList(List<WechatOrgTreeDto> list) {
            this.list = list;
        }
    }

    2、构建数据

    然后是构建结构的方法:

    final String SQL = "SELECT * FROM tt_wechat_org";
    // 先查询所有
    List<Map> all = DAOUtil.findAll(SQL, null);
    
    List<WechatOrgTreeDto> treeList = new ArrayList<>();
    // 第一次遍历是为处理数据
    for (Map map : all) {
        treeList.add(new WechatOrgTreeDto(
                Integer.valueOf(map.get("ID").toString()),
                Integer.valueOf(map.get("PARENT_ID").toString()),
                map.get("NAME").toString()
        ));
    }
    
    // 第二次遍历开始构建结构
    List<WechatOrgTreeDto> wechatOrgTreeDtoList = new ArrayList<>();
    
    for (WechatOrgTreeDto wechatOrgTreeDto : treeList) {
        // 需要头节点装入第一个元素,
        if(1 == wechatOrgTreeDto.getId()) wechatOrgTreeDtoList.add(wechatOrgTreeDto);
        for (WechatOrgTreeDto subTree : treeList) {
            // 第二次便利用子节点的ParentID和父节点ID对比进行添加
            if (subTree.getParentId() .equals(wechatOrgTreeDto.getId()) ) {
                wechatOrgTreeDto.getList().add(subTree);
            }
        }
    }
  • 相关阅读:
    高级架构进阶之HashMap源码就该这么学
    MySQL底层索引剖析
    一篇文章把本该属于你的源码天赋还给你
    不懂RPC实现原理怎能实现架构梦
    观《亿级流量网站架构核心技术》一书有感
    高效程序员如何优雅落地需求
    职场软技能:开启程序员的“破冰之旅”
    获取ScrollView的onScrollListener
    Android自定义控件之圆形进度条ImageView
    Android之內置、外置SDCard
  • 原文地址:https://www.cnblogs.com/mindzone/p/14888046.html
Copyright © 2011-2022 走看看