文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

递归树

2015-08-23 21:00

关注

递归树

定义基本树结构

package com.un.common.utils;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.List;

@ApiModel("社区结构树")
public class StructTree {
    @ApiModelProperty("社区结构id")
    private String csId;

    @ApiModelProperty("社区id")
    private String csCoId;

    @ApiModelProperty("社区结构parentId")
    private String csParentId;

    @ApiModelProperty("社区结构名称")
    private String csName;

    @ApiModelProperty("社区结构全名称")
    private String csFullName;

    @ApiModelProperty("是否为最后一级,1是 0否")
    private Integer isLast;

    @ApiModelProperty("子树")
    List structTreeList;

    public String getCsFullName() {
        return csFullName;
    }

    public void setCsFullName(String csFullName) {
        this.csFullName = csFullName;
    }

    public String getCsCoId() {
        return csCoId;
    }

    public void setCsCoId(String csCoId) {
        this.csCoId = csCoId;
    }

    public String getCsName() {
        return csName;
    }

    public void setCsName(String csName) {
        this.csName = csName;
    }

    public String getCsId() {
        return csId;
    }

    public void setCsId(String csId) {
        this.csId = csId;
    }

    public String getCsParentId() {
        return csParentId;
    }

    public void setCsParentId(String csParentId) {
        this.csParentId = csParentId;
    }

    public Integer getIsLast() {
        return isLast;
    }

    public void setIsLast(Integer isLast) {
        this.isLast = isLast;
    }

    public List getStructTreeList() {
        return structTreeList;
    }

    public void setStructTreeList(List structTreeList) {
        this.structTreeList = structTreeList;
    }

    @Override
    public String toString() {
        return "StructTree{" +
                "csId="" + csId + """ +
                ", csCoId="" + csCoId + """ +
                ", csParentId="" + csParentId + """ +
                ", csName="" + csName + """ +
                ", csFullName="" + csFullName + """ +
                ", isLast=" + isLast +
                ", struceTreeList=" + structTreeList +
                "}";
    }
}

 

定义工具类:

package com.un.common.utils;

import com.unwulian.communitystruct.domain.StructTree;

import java.util.ArrayList;
import java.util.List;


public class CsTreeNodeUtils {

    
    public static List buildByRecursive(List treeNodes) {
        List trees = new ArrayList();
        for (StructTree treeNode : treeNodes) {
            if ("CS0".equals(treeNode.getCsParentId())) {
                trees.add(findChildren(treeNode, treeNodes));
            }
        }
        return trees;
    }

    
    public static com.unwulian.communitystruct.domain.StructTree findChildren(StructTree treeNode, List treeNodes) {
        for (StructTree it : treeNodes) {
            if (treeNode.getCsId().equals(it.getCsParentId())) {
                if (treeNode.getStructTreeList() == null) {
                    treeNode.setStructTreeList(new ArrayList());
                }
                treeNode.getStructTreeList().add(findChildren(it, treeNodes));
            }
        }
        return treeNode;
    }

    
    public static StructTree getTreeNode(String csId, List treeList) {
        for (StructTree structTree : treeList) {
            if (csId.equals(structTree.getCsId())) {
                return structTree;
            } else {
                List tempStructTreeList = structTree.getStructTreeList();
                if(tempStructTreeList != null){
                    StructTree treeNode = getTreeNode(csId, tempStructTreeList);
                    if (treeNode != null) {
                        return treeNode;
                    }
                }
            }
        }
        return null;
    }
}

测试方式

//把普通的list结构转换成树节点
        List treeList = CsTreeNodeUtils.buildByRecursive(structTreeList);
        //根据节点中的摸一个节点获取当前节点以及所有子节点
        StructTree treeNode = CsTreeNodeUtils.getTreeNode(csId, treeList);


//跟新选中节点以及其下所有子节点

    public void updateCsFullName(List treeNodeList, StructTree parentNode) {
        if (CollectionUtils.isEmpty(treeNodeList)) {
            return;
        }
        for (StructTree structTree : treeNodeList) {
            String csFullName = parentNode.getCsFullName() + structTree.getCsName();
            TBasCommunitystruct communitystruct = new TBasCommunitystruct();
            communitystruct.setCsId(structTree.getCsId());
            communitystruct.setCsFullname(csFullName);
            tBasCommunitystructMapper.updateTBasCommunitystruct(communitystruct);
            //当前节点的csFullName也跟新掉
            structTree.setCsFullName(csFullName);
            if (!CollectionUtils.isEmpty(structTree.getStructTreeList())) {
                //自旋跟新子数据节点
                updateCsFullName(structTree.getStructTreeList(), structTree);
            }
        }
    }

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯