阿土伯 是做网站的吗,购物网站黑白,太原网站关键词排名,东莞微信网站商城建设使用递归来完善各种业务数据的层级关系的获取
引言#xff1a;在Java开发中#xff0c;我们通常会遇到层层递进的关系型数据的获取问题#xff0c;有时是树状解构#xff0c;或金字塔结构#xff0c;怎么描述都行#xff0c;错综复杂的关系在程序中还是可以理清的。
这…使用递归来完善各种业务数据的层级关系的获取
引言在Java开发中我们通常会遇到层层递进的关系型数据的获取问题有时是树状解构或金字塔结构怎么描述都行错综复杂的关系在程序中还是可以理清的。
这里插一句题外话和神经网络算法类似简单的递进程序可以完成数据的拼接例如AI机器人根据问题进行的实时回答浏览器搜索信息等等。引用量子矩阵算法根据层层递进的关系数据将答案一层层的推导出来然后得出最终的文本答案或者图片、视频等最终结果。
这里有个简单的示例根据某个员工或员工的集合获取员工的上下级关系丢代码先(亲测有效哦)
public class RecursionDemo {public static void main(String[] args) {ListString employeeUniqueCode Arrays.asList(1,2,3,4,5);String companyCode companyCode;SetString resultSet new HashSet();for (String employeeCode : employeeUniqueCode) {xxxxxxServiceImpl.findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(employeeCode, companyCode, resultSet);}resultSet.forEach(System.out::println);}public static void findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(String superiorLeadCode, String companyCode, SetString employeeCodeSet) {if (StringUtils.isEmpty(superiorLeadCode)) {return;}xxxxxDomain employeeByEmployeeCode xxxMapper.getEmployeeByEmployeeCode(superiorLeadCode);if (ObjectUtils.isEmpty(employeeByEmployeeCode)) {return;}employeeCodeSet.add(superiorLeadCode);ListString 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, SetString employeeCodeSet) {//员工编码作为上级领导编码查询其子级若子级不为空则继续遍历子级查询下级if (StringUtils.isEmpty(superiorLeadCode)) {return;}EmployeeInfo employeeByEmployeeCode employeeInfoMapper.getEmployeeByEmployeeCode(superiorLeadCode);if (ObjectUtils.isEmpty(employeeByEmployeeCode)) {return;}employeeCodeSet.add(superiorLeadCode);ListString list employeeInfoMapper.findAllSubordinateChildEmployeeCodes(superiorLeadCode, companyCode);if (CollectionUtils.isNotEmpty(list)) {for (String code : list) {findAllSubordinateEmployeeCodeByHisSuperiorLeaderCode(code, companyCode, employeeCodeSet);}}}根据员工来查找其下级若下级还有下级那么由该传入的员工数据查完所有的下级。(这里并没有考虑性能若有优化不吝赐教哈)