常用组织树递归

常用办公系统都有自己的一个组织树,作为后端我们该如何去对他们进行层层分级,并且进行排列呢?下面是代码实现

首先,这是一个简单的组织对象,下面有一个基本的子组织列表,和父组织编码

public class Org {
private String num;

private String rootNum;

private List<Org> list;

public String getNum() {
    return num;
}

public void setNum(String num) {
    this.num = num;
}

public List<Org> getList() {
    return list;
}

public void setList(List<Org> list) {
    this.list = list;
}

public String getRootNum() {
    return rootNum;
}

public void setRootNum(String rootNum) {
    this.rootNum = rootNum;
}

public Org(String num, String rootNum, List<Org> list) {
    this.num = num;
    this.rootNum = rootNum;
    this.list = list;
}

}

第二部,对组织进行层层分类:
public static void main(String[] args) {
Org orgTree = getOrgTree();
String string = JSONObject.toJSONString(orgTree);

        System.out.println(string);


}
public static Org getOrgTree() {
    // 查询所有组织数据
    List<Org> allOrgs = Arrays.asList(

            new Org("A010201","A0102",new ArrayList<>()),
            new Org("A010202","A0102",new ArrayList<>()) ,
            new Org("A01","",new ArrayList<>()),
            new Org("A0101","A01",new ArrayList<>()),
            new Org("A0102","A01",new ArrayList<>()),
            new Org("A010101","A0101",new ArrayList<>()),
            new Org("A010102","A0102",new ArrayList<>())
    );

    // 将所有组织数据转换为树形结构
    Map<String, Org> orgMap = new HashMap<>();
    for (Org org : allOrgs) {
        orgMap.put(org.getNum(), org);
    }

    for (Org org : allOrgs) {
        String parentNum = org.getRootNum();
        if (parentNum!= null &&!parentNum.equals("")) {
            Org parent = orgMap.get(parentNum);
            if (parent!= null) {
                if (parent.getList() == null) {
                    parent.setList(new ArrayList<>());
                }
                parent.getList().add(org);
            }
        }
    }

    // 返回根组织对象
    for (Org org : allOrgs) {
        if (org.getRootNum() == null || org.getRootNum().equals("")) {
            return org;
        }
    }

    return null;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈一剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值