您好,根据您提供的代码,我注意到在getSubOrgPath方法中,您没有正确地递归调用自身。我已经对代码进行了修改,以下是修改后的代码:

void Test() {
    List<Org> list = new ArrayList<>();
    list.add(new Org(1L, "A", null));
    list.add(new Org(2L, "B", 1L));
    list.add(new Org(3L, "C", 5L));
    list.add(new Org(4L, "E", null));
    list.add(new Org(5L, "F", 2L));
    list.add(new Org(6L, "G", 4L));
    List<OrgBo> res = transOrgBo(list);
    System.out.println(res);
}

private List<OrgBo> transOrgBo(List<Org> list) {
    List<OrgBo> res = new ArrayList<>();
    for (Org org : list) {
        OrgBo orgBo = new OrgBo();
        orgBo.setId(org.getId());
        orgBo.setName(org.getName());
        orgBo.setPath(getSubOrgPath(list, org.getName(), org.getParentId()));
        res.add(orgBo);
    }
    return res;
}

private String getSubOrgPath(List<Org> list, String path, Long pid) {
    if (pid == null) {
        return path;
    }
    for (Org org : list) {
        if (pid.equals(org.getId())) {
            path = org.getName() + "/" + path;
            path = getSubOrgPath(list, path, org.getParentId()); // 递归调用自身
            break;
        }
    }
    return path;
}

此次修改主要是在getSubOrgPath方法中添加了正确的递归调用语句。现在,代码应该可以正确地生成组织路径了。

void Test ListOrg list = new ArrayList; listaddnew Org1L A null; listaddnew Org2L B 1L; listaddnew Org3L C 5L; listaddnew Org4L E null; listaddnew Org5L F 2L

原文地址: https://www.cveoy.top/t/topic/i2I1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录