首页 > 编程语言 >java根据组织表中的id parent_id生成 org_path

java根据组织表中的id parent_id生成 org_path

时间:2023-07-14 11:31:58浏览次数:32  
标签:java parent 组织 表中 Org org path id

Java根据组织表中的id parent_id生成org_path的实现流程

1. 整体流程

为了实现根据组织表中的id和parent_id生成org_path,我们可以按照以下步骤进行操作:

步骤 操作
1 获取组织表中的所有数据
2 创建一个HashMap用于存储每个组织id对应的结果
3 遍历组织表中的每个组织记录
4 对于每个组织记录,检查它是否有父组织
5 如果有父组织,将父组织的org_path与当前组织的id拼接
6 如果没有父组织,当前组织的org_path即为自身id
7 将当前组织的org_path存入HashMap
8 遍历完成后,HashMap中存储了每个组织id对应的org_path

2. 代码实现

下面是按照上述流程实现的Java代码,包含了每一步需要做的操作和相应的注释:

import java.util.HashMap;
import java.util.List;

public class OrgPathGenerator {

    // 定义一个方法生成org_path
    public void generateOrgPath(List<Org> orgList) {
        // 步骤1:获取组织表中的所有数据
        // orgList 是组织表中的数据,每个Org对象包含id和parent_id等字段

        // 步骤2:创建一个HashMap用于存储每个组织id对应的结果
        HashMap<Integer, String> orgPathMap = new HashMap<>();

        // 步骤3:遍历组织表中的每个组织记录
        for (Org org : orgList) {
            // 步骤4:检查当前组织是否有父组织
            if (org.getParentId() != null) {
                // 步骤5:将父组织的org_path与当前组织的id拼接
                String parentOrgPath = orgPathMap.get(org.getParentId());
                String orgPath = parentOrgPath + "/" + org.getId();
                orgPathMap.put(org.getId(), orgPath);
            } else {
                // 步骤6:没有父组织,当前组织的org_path即为自身id
                orgPathMap.put(org.getId(), String.valueOf(org.getId()));
            }
        }

        // 步骤8:遍历完成后,HashMap中存储了每个组织id对应的org_path
        for (Integer orgId : orgPathMap.keySet()) {
            System.out.println("组织id:" + orgId + ",org_path:" + orgPathMap.get(orgId));
        }
    }

    // 测试代码
    public static void main(String[] args) {
        // 假设组织表中有以下数据
        List<Org> orgList = getOrgListFromDatabase();
        OrgPathGenerator generator = new OrgPathGenerator();
        generator.generateOrgPath(orgList);
    }

    // 模拟从数据库中获取组织表数据
    private static List<Org> getOrgListFromDatabase() {
        // 省略数据库操作,直接返回模拟数据
        // 假设组织表中有以下数据
        Org org1 = new Org(1, null);
        Org org2 = new Org(2, 1);
        Org org3 = new Org(3, 1);
        Org org4 = new Org(4, 2);
        Org org5 = new Org(5, 2);
        return List.of(org1, org2, org3, org4, org5);
    }
}

class Org {
    private Integer id;
    private Integer parentId;

    public Org(Integer id, Integer parentId) {
        this.id = id;
        this.parentId = parentId;
    }

    public Integer getId() {
        return id;
    }

    public Integer getParentId() {
        return parentId;
    }
}

通过上述代码实现,可以根据组织表中的id和parent_id生成对应的org_path。请根据具体的业务需求和数据结构进行适当的调整和扩展。

标签:java,parent,组织,表中,Org,org,path,id
From: https://blog.51cto.com/u_16175478/6719719

相关文章

  • java根据实体类排序
    Java根据实体类排序在Java开发中,我们经常需要对实体类进行排序。排序是一种常见的操作,它能够帮助我们对一组对象按照特定的规则进行排列。本文将介绍如何使用Java对实体类进行排序,并提供代码示例来帮助读者更好地理解。实体类排序概述首先,我们需要了解实体类排序的基本概念。排......
  • java学习day03:循环结构
    我在B站上大学......
  • 使用Debian 11基础镜像制作java8镜像
    下面是dockerfile内容:FROMdebian:bullseye#切换apt源为清华源,并安装vimpingtelnet命令RUNapt-getupdate&&aptinstall-yapt-transport-httpsca-certificates&&\cp/etc/apt/sources.list/etc/apt/sources.list.bak&&\echo"debhttps:......
  • getMethods 与 @Override
    importjava.lang.reflect.Method;publicclassTest{publicstaticvoidmain(String[]f){Method[]methods=B.class.getMethods();}privatestaticclassA{publicAxxx(){returnnewA();}}privatestat......
  • Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass
    pom文件中JDK是1.8项目的jdk17只需要统一一下jdk即可......
  • java设置excel自定义列宽
    Java设置Excel自定义列宽在Java中,我们经常需要操作Excel文件。Excel文件的列宽度对于数据的展示非常重要。默认情况下,Excel中的列宽度是根据内容自动调整的,但有时我们需要手动设置列宽度来确保数据的可读性和美观性。本文将介绍如何使用Java程序来设置Excel文件的自定义列宽。使......
  • java设置excel居中
    Java设置Excel居中在处理Excel文件时,有时候我们需要对单元格中的数据进行格式化和对齐操作,以便更好地呈现数据。本文将介绍如何使用Java设置Excel单元格居中对齐,并提供代码示例以供参考。准备工作在开始之前,我们需要确保以下几点:你已经安装了Java开发工具包(JavaDevelopmentK......
  • java设计模式实现结论
    Java设计模式实现结论场景描述在软件开发过程中,我们经常会遇到一些常见的问题和需求。为了提高代码的复用性、可维护性和可扩展性,使用设计模式是一个非常好的选择。设计模式是一种被反复验证的、经过优化的解决方案,可以解决特定问题的代码设计问题。流程概述为了实现设计模式,我......
  • 删除img标签里的width和height属性,并在img标签前后加一个br标签
    #提取img标签tree_img=etree.HTML(content)width=tree_img.xpath('//img//@width')[0]height=tree_img.xpath('//img//@height')[0]#替换掉width=,和height=......
  • 设计模式-桥接模式在Java中的使用示例
    场景桥接模式情境引入假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12=36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的对象个数仅为3+12=15,远小于36,却能实现与36支蜡笔同样的功能。如果增加一种新型号的画......