当前位置: 首页 > news >正文

【Java】使用递归的方法获取层级关系数据demo

使用递归来完善各种业务数据的层级关系的获取

引言:在Java开发中,我们通常会遇到层层递进的关系型数据的获取问题,有时是树状解构,或金字塔结构,怎么描述都行,错综复杂的关系在程序中还是可以理清的。

这里插一句题外话,和神经网络算法类似,简单的递进程序可以完成数据的拼接,例如:AI机器人根据问题进行的实时回答,浏览器搜索信息等等。引用量子矩阵算法,根据层层递进的关系数据将答案一层层的推导出来,然后得出最终的文本答案或者图片、视频等最终结果。

这里有个简单的示例,根据某个员工或员工的集合获取员工的上下级关系,丢代码先(亲测有效哦)

public class RecursionDemo {public static void main(String[] args) {List<String> employeeUniqueCode = Arrays.asList("1","2","3","4","5");String companyCode = "companyCode";Set<String> resultSet = new HashSet<>();for (String employeeCode : employeeUniqueCode) {findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(employeeCode, companyCode, resultSet);}resultSet.forEach(System.out::println);}public static void findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(String superiorLeadCode, String companyCode, Set<String> employeeCodeSet) {if (StringUtils.isEmpty(superiorLeadCode)) {return;}xxxxxDomain employeeByEmployeeCode = xxxMapper.getEmployeeByEmployeeCode(superiorLeadCode);if (ObjectUtils.isEmpty(employeeByEmployeeCode)) {return;}employeeCodeSet.add(superiorLeadCode);List<String> list = xxxMapper.findAllSubordinateChildEmployeeCodes(superiorLeadCode, companyCode);if (CollectionUtils.isNotEmpty(list)) {for (String code : list) {findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(code, companyCode, employeeCodeSet);}}}}

其实发现递归也仅仅是简单关系的查询而已,和每个神经元计算相同,满足特定的条件出现特定字符,然后根据组装算法拼接完整文本结果。继续递归,复杂关系的套路其实是一样的,简单关系的叠加态就成了复杂关系,复杂关系的查询递归的递归,就是在一个现有的条件中,获取条件参数嵌入另一个符合的递归条件中,环环相扣。

以下是一个简单的递归查询关系的工具,该程序满足小白的需求,有助于理解

   /*** 递归找出改员工的所有下级员工编码* @param superiorLeadCode  员工编码* @param companyCode       企业编码* @param employeeCodeSet   空结果set集合*/public void findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(String superiorLeadCode, String companyCode, Set<String> employeeCodeSet) {//员工编码作为上级领导编码查询其子级,若子级不为空,则继续遍历子级查询下级,if (StringUtils.isEmpty(superiorLeadCode)) {return;}EmployeeInfo employeeByEmployeeCode = employeeInfoMapper.getEmployeeByEmployeeCode(superiorLeadCode);if (ObjectUtils.isEmpty(employeeByEmployeeCode)) {return;}employeeCodeSet.add(superiorLeadCode);List<String> list = employeeInfoMapper.findAllSubordinateChildEmployeeCodes(superiorLeadCode, companyCode);if (CollectionUtils.isNotEmpty(list)) {for (String code : list) {findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(code, companyCode, employeeCodeSet);}}}

根据员工来查找其下级,若下级还有下级,那么由该传入的员工数据,查完所有的下级。(这里并没有考虑性能,若有优化,不吝赐教哈)

在这里插入图片描述

相关文章:

【Java】使用递归的方法获取层级关系数据demo

使用递归来完善各种业务数据的层级关系的获取 引言&#xff1a;在Java开发中&#xff0c;我们通常会遇到层层递进的关系型数据的获取问题&#xff0c;有时是树状解构&#xff0c;或金字塔结构&#xff0c;怎么描述都行&#xff0c;错综复杂的关系在程序中还是可以理清的。 这…...

工业6轴机械臂运动学逆解(解析解)

工业6轴机械臂运动学逆解&#xff08;解析解&#xff09; 通常工业机械臂采用6旋转轴串连的形式&#xff0c;保证了灵活性&#xff0c;但为其运动学逆解&#xff08;即已知机械臂末端的位姿 P P P&#xff0c;求机械臂各个旋转轴的旋转角&#xff09;带来了较大的困难&#xff…...

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜A/B

老规矩&#xff0c;看目录&#xff0c;平均3-5题 文章目录 A/B2023真题&#xff08;2023-19&#xff09;-A-选项特点&#xff1a;两个等号&#xff1b;-判断需联立的难易&#xff1a;难&#xff0c;看着感觉需要联立&#xff0c;所以判断联立需要有理论支撑&#xff0c;不然还…...

为什么GRU和LSTM能够缓解梯度消失或梯度爆炸问题?

1、什么是梯度消失&#xff08;gradient vanishing&#xff09;&#xff1f; 参数更新过小&#xff0c;在每次更新时几乎不会移动&#xff0c;导致模型无法学习。 2、什么是梯度爆炸&#xff08;gradient exploding&#xff09;&#xff1f; 参数更新过小大&#xff0c;破坏了…...

【力扣100】146.LRU缓存

添加链接描述 class DLinkedNode:def __init__(self, key0, value0):self.key keyself.value valueself.prev Noneself.next Noneclass LRUCache:def __init__(self, capacity: int):self.cache dict()# 使用伪头部和伪尾部节点 self.head DLinkedNode()self.tail D…...

【Vue中给输入框加入js验证_blur失去焦点进行校验】

【Vue中给输入框加入js验证_blur失去焦点进行校验】 通俗一点就是给输入框加个光标离开当前文本输入框时&#xff0c;然后对当前文本框内容进行校验判断 具体如下&#xff1a; 1.先给文本框加属性 blur“validatePhoneNumber” <el-input v-model“entity.telephone” blur…...

vue3项目引入电子签名(可横屏竖屏)

实现效果&#xff1a;&#xff08;左边横屏&#xff0c;右边竖屏&#xff09; 前言&#xff1a;【使用开源项目smooth-signature 实现签名的功能。Gitee 地址是 &#xff1a;GitHub - linjc/smooth-signature: H5带笔锋手写签名&#xff0c;支持PC端和移动端&#xff0c;任何前…...

mysql中count(*)、count(1)、count(主键)、count(字段)的区别

文章目录 count函数的语义count(主键)count(1)count(*)count(字段)替代方案explain或者show table status中间表或者其他数据库计数 以下分析都是基于 select count(?) from table 这个语句来分析&#xff0c;不带过滤条件。 count函数的语义 count() 是一个聚合函数&#x…...

Nginx生成自签名证书从而添加域名的HTTPS访问

数字证书 ## 原理参考 https://mysticaldream.github.io/2023/05/certificate/## https://blog.csdn.net/m0_52440465/article/details/130713591 简介 数字证书是由证书颁发机构(CA)签名并颁发的电子文件,用于建立网络连接的身份认证和加密通信。SSL 证书是数字证书的一种。…...

无框架Java转go语言写http与tcp请求

项目地址 https://github.com/cmdch2017/http_tcpServer 项目结构 如何快速上手 http篇 1、controller包就相当于RestController&#xff0c;这里返回了一个Person对象&#xff0c;当你需要新建一个接口时&#xff0c;再新写一个func仿照下面的方法就行了 package control…...

【Git】Git基本操作

文章目录 Git 是什么Git 的优点Git 安装Linux UbuntuLinux CentOsWindows Git 基本操作1. 创建 Git 本地仓库2. 配置 Git3. Git工作区、暂存区和版本库4. 添加文件5. 查看 .git 文件6. 修改文件7. 版本回退 Git 是什么 Git是一个免费的、开源的分布式版本控制系统&#xff0c;…...

JavaSE学习笔记 Day20

JavaSE学习笔记 Day20 个人整理非商业用途&#xff0c;欢迎探讨与指正&#xff01;&#xff01; 上一篇 文章目录 JavaSE学习笔记 Day20十七、数据结构与算法17.1算法17.1.1冒泡排序17.1.2选择排序17.1.3插入排序17.1.4三个排序的区别 17.2顺序表17.2.1顺序表代码实现17.2.2顺…...

【蓝桥杯选拔赛真题52】python空调模式 第十四届青少年组蓝桥杯python 选拔赛比赛真题解析

目录 python空调模式 一、题目要求 1、编程实现 2、输入输出...

Android Studio: 解决Gradle sync failed 错误

文章目录 1. 前言2. 错误情况3. 解决办法3.1 获取gradle下载地址3.2 获取gradle存放目录3.3 替换并删除临时文件3.4 触发Try Again 4. 执行成功 1. 前言 今天调试项目&#xff0c;发现新装的AS&#xff0c;在下载gradle的过程中&#xff0c;一直显示连接失败&#xff0c;Gradl…...

【手写数据库】从零开始手写数据库内核,行列混合存储模型,学习大纲成型了

目录 ​专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以…...

机器学习中的一些经典理论定理

PAC学习理论 当使用机器学习方法来解决某个特定问题时&#xff0c;通常靠经验或者多次试验来选择合适的模型、训练样本数量以及学习算法收敛的速度等。但是经验判断或多次试验往往成本比较高&#xff0c;也不太可靠&#xff0c;因此希望有一套理论能够分析问题难度、计算模型能…...

c语言:成本100元,40%的利润怎么计算|练习题

一、利润的计算公式&#xff1a; 利润售价-成本 售价成本/(1-利润率) 二、用c语言代码表示为&#xff1a; 如图&#xff1a; 三、计算源代码【带注释】 #include <stdio.h> int main() { float cost;//成本变量 int prof_rate;//利润率变量 float price;//…...

【Python必做100题】之第二十二题(复制列表)

题目&#xff1a;将一个列表的数据复制到另一个列表中 重点&#xff1a;确保复制到位要导入copy方法进行深度复制 代码如下&#xff1a; #将一个列表的数据复制到另一个列表中 import copy list [1,2,3,4] print(list) list1 copy.copy(list) list[0] 30 print(list) pri…...

Java 数据结构篇-实现堆的核心方法与堆的应用(实现 TOP-K 问题:最小 k 个数)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 堆的说明 2.0 堆的成员变量及其构造方法 3.0 实现堆的核心方法 3.1 实现堆的核心方法 - 获取堆顶元素 peek() 3.2 实现堆的核心方法 - 下潜 down(int i) 3.3 实…...

startUML6.0.1破解方法

startUML6.0.1破解方法 文章目录 startUML6.0.1破解方法1.startUML6.0.1快速破解2.概述3.安装Nodejs4.安装asar5.修改app.asar中的源码6.将修改后的源码重新压缩7.覆盖官方的asar文件8.重启startUML9.参考文档 1.startUML6.0.1快速破解 后绪步骤可以不看&#xff0c;直接下载我…...

Unity性能优化实战:Mesh Baker 纹理合并与UV重映射详解

1. 为什么需要纹理合并与UV重映射 在开发开放世界游戏时&#xff0c;场景中往往会出现大量重复的建筑、植被等模型。每个模型通常都有自己的材质球和贴图&#xff0c;这会导致两个严重问题&#xff1a;首先是Draw Call数量激增&#xff0c;每个材质球都会产生一次Draw Call&…...

LLM长文本处理实战:模块化分割策略与向量化预处理指南

1. 项目概述&#xff1a;一个为LLM打造的文本处理中心如果你和我一样&#xff0c;经常和大型语言模型打交道&#xff0c;无论是用它来总结文档、分析代码&#xff0c;还是处理客服对话&#xff0c;那你肯定遇到过这个痛点&#xff1a;喂给模型的文本太长了怎么办&#xff1f;模…...

抖音无水印下载器:终极免费批量下载工具完全指南

抖音无水印下载器&#xff1a;终极免费批量下载工具完全指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

终极指南:如何免费使用Umi-OCR实现高效离线文字识别

终极指南&#xff1a;如何免费使用Umi-OCR实现高效离线文字识别 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置多国语言库…...

Vibe Annotations:AI编程时代的视觉反馈工具,精准沟通前端修改意图

1. 项目概述&#xff1a;一个为AI编程时代量身定制的视觉反馈工具如果你和我一样&#xff0c;每天都在和AI编程助手&#xff08;比如Cursor、Claude Code&#xff09;打交道&#xff0c;那你肯定遇到过这个痛点&#xff1a;想让它帮你改一个网页按钮的颜色&#xff0c;或者调整…...

工业电气安全:电弧闪爆防护与Rittal机柜解决方案

1. 电弧闪爆现象的本质解析电弧闪爆&#xff08;Arc Flash&#xff09;是工业电气系统中最具破坏性的安全隐患之一。作为一名在电力行业工作15年的安全工程师&#xff0c;我亲眼见证过多次由电弧闪爆引发的严重事故。最令人震惊的是2008年某化工厂的案例&#xff1a;一位电工在…...

【OpenCV实战】从相机标定到PnP测距:手把手实现单目视觉定位(C++代码详解)

1. 相机标定基础与实战准备 单目视觉定位就像给机器人装上了一只"智慧之眼"&#xff0c;而相机标定就是教会这只眼睛如何正确理解世界。想象一下&#xff0c;如果你戴了一副度数不合适的眼镜&#xff0c;看到的物体位置和形状都会失真——相机标定要解决的就是类似的…...

3PEAK思瑞浦 TPA3532-VS1R MSOP8 运算放大器

特性 超低输入偏置电流: -在TA25C时最大士1pA(实验室测试限值) 安 -在-40C至125C(实验室测试限值)下&#xff0c;最大30皮 低输入失调电压:250V(最大值) 集成保护缓冲器&#xff0c;最大偏移电压为200V 低电压噪声密度:18nV/vHz(在1kHz时) 宽带宽:2.1MHz 供电电压:4.5V至16V(2.…...

冲突矿产法规合规:供应链尽责管理与ESG风险应对实战指南

1. 冲突矿产法规合规&#xff1a;一场被低估的供应链风暴如果你是一家电子、汽车或工业设备制造公司的供应链、法务或合规负责人&#xff0c;现在请立刻停下手中的工作&#xff0c;问自己一个问题&#xff1a;我们公司使用的锡、钽、钨、金&#xff08;3TG&#xff09;这四种金…...

淘金币自动化脚本:3分钟完成淘宝全任务,每天节省20分钟

淘金币自动化脚本&#xff1a;3分钟完成淘宝全任务&#xff0c;每天节省20分钟 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojin…...