Java通用树形结构数据封装

本文介绍如何在Java中创建一个通用方法来封装从服务器获取的树形结构数据。方法着重于树节点的内容、ID、父ID、是否默认展开及子节点列表等关键属性,已在PC和APP端得到验证。
摘要由CSDN通过智能技术生成

文章描述

项目中经常使用到树形列表,树形结构数据都从服务器中拿取,服务器通过特定规则查询数据库封装树形结构数据,此时就需要考虑怎样写出一个最通用的方法封装数据。本人觉得我的这个方法应该可以满足所有树形结构的数据封装。在PC端,APP端已得到验证

思路

树形结构根据不同的条件需求找寻共通点,不管任何的业务需求,树形列表总要满足一下几个方面(不保证完全覆盖,欢迎大家完善):
1,树形节点的内容(title)
2, 树形节点id
3,树形节点关联id(我习惯叫它父id)
4,默认树形列表是否展开checked
5,子集 List

代码

一, 树形实体类

package com.yx.model.entity;

import java.util.List;

public class TreeModel {
   
    private String title ; //tree名
    private String value ; //id
    private String pId ;  //父级id
    private String url ; //树形节点路径
    private List<TreeModel> data ;  //子集合

    private String id ;
    private String name ;
    private boolean checked ;
    private String status; //状态 (0:启用,1:禁用)
    private String codeUrl; // 编码URL

    public String getId() {
   
        return id;
    }

    public void setId(String id) {
   
        this.id = id == null ? null : id.trim();
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name == null ? null : name.trim();
    }

    public boolean isChecked() {
   
        return checked;
    }

    public void setChecked(boolean checked) {
   
        this.checked = checked;
    }

    public String getpId() {
   
        return pId;
    }

    public void setpId(String pId) {
   
        this.pId = pId;
    }

    public String getTitle() {
   
        return title;
    }

    public void setTitle(String title) {
   
        this.title = title;
    }

    public String getValue() {
   
        return value;
    }

    public void setValue(String value) {
   
        this.value = value;
    }

    public List<TreeModel> getData() {
   
        return data;
    }

    public void setData(List<TreeModel> data) {
   
        this.data = data;
    }

    public String getStatus() {
   
        return status;
    }

    public void setStatus(String status) {
   
        this.status = status == null ? null : status.trim();
    }

    public String getUrl() {
   
        return url;
    }

    public void setUrl(String url) {
   
        this.url = url;
    }

    public String getCodeUrl() {
   
        return codeUrl;
    }

    public void setCodeUrl(String codeUrl) {
   
        this.codeUrl = codeUrl;
    }

    @Override
    public String toString() {
   
        return "TreeModel{" +
                "title='" + title + '\'' +
                ", value='" + value + '\'' +
                ", pId='" + pId + '\'' +
                ", url='" + url + '\'' +
                ", data=" + data +
                ", id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", checked=" + checked +
                ", status='" + status + '\'' +
                ", codeUrl='" + codeUrl + '\'' +
                '}';
    }
}

二,封装数据

 public Object innerDeptTree() {
   
        QxGroup group = new QxGroup()`;`
        group.setDeletedFlag(DeletedFlag.NO.getFlag());
        // queryAdminQx(group, DataType.Group);// 管理员权限组
        List<QxGroup> gList = groupService.queryListByWhere(group);
        // 转为TreeModel格式
        List<TreeModel> tList = new ArrayList<TreeModel>();
     if(gList!=null&&gList.size()>0){
   
         for (QxGroup qxGroup : gList) {
   
             TreeModel tm = new TreeModel();
             tm.setTitle(qxGroup.getName());
             tm.setValue(qxGroup.getGid());
             tm.setpId(qxGroup.getParentid());
             tm.setId(qxGroup.getGid());
             tm.setName(qxGroup.getName());
             tm.setChecked(true);
             tm.setStatus(qxGroup.getStatus());
             tList.add(tm);
         }
        for (int a=0;a<tList.size();a++){
   
            TreeModel treeModel=tList.get(a);
            for (int b=0;b<tList.size();b++){
   
                if(Objects.equals(treeModel.getId(),tList.get(b).getpId())){
   
                    int d=0;
                    for (int c=0;c<tList.size();c++){
   
                        if(Objects.equals(tList.get(c).getpId(),tList.get(b).getId())){
   
                            d++;
                        }
                    }
                    List<TreeModel> data = treeModel.getData()==null?new ArrayList<>():treeModel.getData();
                    if(d>0){
   
                        Map<String,Object> map=new HashMap<>();
                        map.put("flag",true);
          
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值