首页 > 其他分享 >通用-递归树结构

通用-递归树结构

时间:2024-03-27 11:55:19浏览次数:14  
标签:通用 BigDecimal 递归 树结构 void children return public districtTree

  • 通用树结构
     /**
         * 获取区域树
         *
         * @param ydDistrictDto
         * @return
         */
        public DistrictTree getDistrictTree(YdDistrictDto ydDistrictDto) {
            //权限逻辑暂时空着
            List<YdDistrict> districtList = list(new YdDistrictDto());
            DistrictTree districtTree = new DistrictTree();
            //文山州为最顶层
            YdDistrict topDistrict = new YdDistrict();
            int topPid = ydDistrictDto.getParentId() == null ? 1 : ydDistrictDto.getParentId();
            if (topPid == 0) {
                topDistrict = ydDistrictService.queryById(1);
            } else {
                topDistrict = ydDistrictService.queryById(topPid);
            }
            districtTree.setId(topPid);
            districtTree.setDistrictLevel(topDistrict.getDistrictLevel());
            districtTree.setParentId(topDistrict.getParentId());
            districtTree.setDistrictName(topDistrict.getDistrictName());
            recursionDicTree(districtTree, districtList);
            return districtTree;
        }

     

  • 递归-核心逻辑
    /**
     * 递归生成组织树
     *
     * @param districtTree
     * @param list
     */
    public void recursionDicTree(DistrictTree districtTree, List<YdDistrict> list) {
        for (YdDistrict ydDistrict : list) {
            if (districtTree.getId().equals(ydDistrict.getParentId())) {
                List<DistrictTree> children = districtTree.getChildren();
                if (children == null || children.size() == 0) {
                    children = new ArrayList<>();
                    districtTree.setChildren(children);
                }
                DistrictTree subTree = DistrictTree.convertDicTree(ydDistrict);
                children.add(subTree);
                recursionDicTree(subTree, list);
            }
        }
    }

 

  • 递归-核心逻辑
    /**
     * 递归生成组织树
     *
     * @param districtTree
     * @param list
     */
    public void recursionDicTree(DistrictTree districtTree, List<YdDistrict> list) {
        for (YdDistrict ydDistrict : list) {
            if (districtTree.getId().equals(ydDistrict.getParentId())) {
                List<DistrictTree> children = districtTree.getChildren();
                if (children == null || children.size() == 0) {
                    children = new ArrayList<>();
                    districtTree.setChildren(children);
                }
                DistrictTree subTree = DistrictTree.convertDicTree(ydDistrict);
                children.add(subTree);
                recursionDicTree(subTree, list);
            }
        }
    }
  • 树模型
package com.yiding.saas.ydsaas.vo;

import com.yiding.saas.ydsaas.model.YdDistrict;
import com.yiding.saas.ydsaas.model.YdSmallFrameLog;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 行政区树对象
 */
public class DistrictTree implements Serializable {

    private static final long serialVersionUID = -8608004181699249859L;

    private Integer id;
    private String districtName;
    private Integer parentId;
    private String districtLevel;
    private BigDecimal currentB;
    private BigDecimal cumulativeB;
    private BigDecimal outStockB;

    /**
     * 未出发
     */
    private BigDecimal notStart;

    /**
     * 在途中
     */
    private BigDecimal onWay;

    /**
     * 已到达
     */
    private BigDecimal arrivals;

    public BigDecimal getNotStart() {
        return notStart;
    }

    public void setNotStart(BigDecimal notStart) {
        this.notStart = notStart;
    }

    public BigDecimal getOnWay() {
        return onWay;
    }

    public void setOnWay(BigDecimal onWay) {
        this.onWay = onWay;
    }

    public BigDecimal getArrivals() {
        return arrivals;
    }

    public void setArrivals(BigDecimal arrivals) {
        this.arrivals = arrivals;
    }

    public BigDecimal getCurrentB() {
        return currentB;
    }

    public void setCurrentB(BigDecimal currentB) {
        this.currentB = currentB;
    }

    public BigDecimal getCumulativeB() {
        return cumulativeB;
    }

    public void setCumulativeB(BigDecimal cumulativeB) {
        this.cumulativeB = cumulativeB;
    }

    public BigDecimal getOutStockB() {
        return outStockB;
    }

    public void setOutStockB(BigDecimal outStockB) {
        this.outStockB = outStockB;
    }

    private List<DistrictTree> children;

    /**
     * 库存信息统计
     */
    private List<KcStatisticalVo> kcInfoList;


    /**
     * 运单统计
     */
    private List<TransprotVo> transprotVoList;

    public List<TransprotVo> getTransprotVoList() {
        return transprotVoList;
    }

    public void setTransprotVoList(List<TransprotVo> transprotVoList) {
        this.transprotVoList = transprotVoList;
    }

    public List<KcStatisticalVo> getKcInfoList() {
        return kcInfoList;
    }

    public void setKcInfoList(List<KcStatisticalVo> kcInfoList) {
        this.kcInfoList = kcInfoList;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getDistrictName() {
        return districtName;
    }

    public void setDistrictName(String districtName) {
        this.districtName = districtName;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public List<DistrictTree> getChildren() {
        return children;
    }

    public void setChildren(List<DistrictTree> children) {
        this.children = children;
    }

    public String getDistrictLevel() {
        return districtLevel;
    }

    public void setDistrictLevel(String districtLevel) {
        this.districtLevel = districtLevel;
    }

    /**
     * 行政区模型转树模型
     *
     * @param ydDistrict
     * @return
     */
    public static DistrictTree convertDicTree(YdDistrict ydDistrict) {
        DistrictTree districtTree = new DistrictTree();
        districtTree.setId(ydDistrict.getId());
        districtTree.setDistrictName(ydDistrict.getDistrictName());
        districtTree.setParentId(ydDistrict.getParentId());
        districtTree.setDistrictLevel(ydDistrict.getDistrictLevel());
        districtTree.setCurrentB(ydDistrict.getCurrentkc());
        districtTree.setCumulativeB(ydDistrict.getCumulativeAcquisition());
        districtTree.setOutStockB(ydDistrict.getOutStock());
        return districtTree;
    }
}

 

标签:通用,BigDecimal,递归,树结构,void,children,return,public,districtTree
From: https://www.cnblogs.com/coderdxj/p/18098632

相关文章

  • Java8递归生成树
    @Data@BuilderpublicclassMenu{/***id*/publicIntegerid;/***名称*/publicStringname;/***父id,根节点为0*/publicIntegerparentId;/***子节点信息*/publicList<Menu>......
  • [蓝桥杯 2013 国 C] 危险系数 dfs 深搜 递归
    ##题目背景抗日战争时期,冀中平原的地道战曾发挥重要作用。##题目描述地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一个危险系数$DF(x,y)$:对于两个站点$x$和$y(x\neqy),$如果能找到一......
  • 树结构学习:B树、B+树
    平衡二叉树的查找效率是非常高的,并可以通过降低树的深度来提高查找的效率。但是当数据量非常大,树的存储的元素数量是有限的,这样会导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下。而B树的出现是为了解决这个问题,其可以一次性读入许多数据......
  • Python数据结构实验 递归算法设计
    一、实验目的1.掌握递归程序设计的基本原理和方法;2.熟悉数据结构中顺序表和单链表下的递归算法设计思想;3.掌握并灵活运用递归算法解决一些较复杂的应用问题。二、实验环境1.Windows操作系统的计算机2.Python3.7环境平台和PyCharm编辑器三、实验说明 1.实现递归算法的程序......
  • 十 1360. 有序分数 (最大公约数|递归)
    1360.有序分数(最大公约数|递归)方法一思路:统计所有组合,并求其最大公约数是否为1,只有最大公约数为1的组合才成立,然后按组成的分数大小顺序排序。importjava.util.*;publicclassMain{privatestaticintgcd(inta,intb){returnb==0?a:gcd(b......
  • Java的方法、重载、递归、内存
    一、方法什么是方法方法:一堆代码的集合,一般完成了某个特定的功能,当我们再次使用这个方法的时候,就等于使用了这些代码。方法目的:代码复用,提高程序灵活度,易维护,易扩展。方法的声明修饰符列表  返回值类型  方法名 (参数列表){ 方法体 }注意事项修饰符列表 ......
  • TTS通用播放库技术设计
    TTS音频播放库技术设计目录介绍01.整体介绍概述1.1项目背景介绍1.2遇到问题1.3基础概念介绍1.4设计目标1.5问题答疑和思考02.技术调研说明2.1语音播放方案2.2TTS技术分析2.3语音合成技术2.4方案选择说明2.5方案设计思路2.6文本生成音频03.系统TT......
  • 19. 通用定时器
    一、通用定时器简介  STM32F407有10个通用定时器(TIM2~TIM5和TIM9~TIM14)。这些定时器彼此完全独立,不共享任何资源。其主要特性如下:16位递增、递减、中心对齐计数器(计数值:0~65535),16位可编程预分频器(预分频系数:1~65536),用于对计数器时钟频率进行分频,还可以触发DAC......
  • python 递归树状结构 和 排序
    排序defrecursive_sort(self,categories):categories.sort(key=lambdax:x['sort'])forcategoryincategories:ifcategory['children']:category['children']=self.recursive_sort(ca......
  • drf : 通用视图类和(GenericAPIView)5个视图扩展类,九个视图子类,视图集。
    视图RESTframework提供了众多的通用视图基类与扩展类,以简化视图的编写。APIViewrest_framework.views.APIViewAPIView是RESTframework提供的所有视图的基类,继承自Django的View父类。GenericAPIView使用[通用视图类]继承自APIVIew,主要增加了操作序列化器和数据库查询的方......