JAVA递归获取所有子节点与父节点

/**
 * 递归获取所有子节点,不包含自己
 */
public class getChildren {
    static List<Map<String, Object>> childCategoryList = new ArrayList<Map<String, Object>>();
 
    public static void main(String[] args) {
        List<Map<String, Object>> allCategoryList = new ArrayList<Map<String,Object>>();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("auId", "0");
        map.put("parentId", "-1");
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("auId", "1");
        map1.put("parentId", "0");
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("auId", "2");
        map2.put("parentId", "1");
        Map<String, Object> map3 = new HashMap<String, Object>();
        map3.put("auId", "3");
        map3.put("parentId", "2");
        Map<String, Object> map4 = new HashMap<String, Object>();    
        map4.put("auId", "4");
        map4.put("parentId", "3");
        Map<String, Object> map5  = new HashMap<String, Object>();    
        map5.put("auId", "44");
        map5.put("parentId", "3");
        Map<String, Object> map6  = new HashMap<String, Object>();    
        map6.put("auId", "55");
        map6.put("parentId", "4");
        allCategoryList.add(map);
        allCategoryList.add(map1);
        allCategoryList.add(map2);
        allCategoryList.add(map3);
        allCategoryList.add(map4);
        allCategoryList.add(map5);
        allCategoryList.add(map6);
        String categoryAuId = "0";
        childCategoryList = new ArrayList<Map<String,Object>>();
        List<Map<String, Object>> rMap = getChildCategory(allCategoryList, categoryAuId);
        System.out.println("rMap=" + rMap);
    }
    
    public static List<Map<String, Object>> getChildCategory(List<Map<String, Object>> allCategoryList, String parentId){          
        for (Map<String, Object> category : allCategoryList) {
            // 判断是否存在子节点
            if (category.get("parentId").toString().equals(parentId)) {
                // 递归遍历下一级
                getChildCategory(allCategoryList, category.get("auId").toString());
                childCategoryList.add(category);
            }
        }
        System.out.println("childCategoryList=" + childCategoryList);
        return childCategoryList;
    }
}

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

递归获取所有父节点测试用例:

/**
 * 递归所有父节点,包含自己
 */
public class getParents {
    
    static List<Map<String, Object>> parentCategoryList = new ArrayList<Map<String, Object>>();
    
    public static void main(String[] args) {
        List<Map<String, Object>> allCategoryList = new ArrayList<Map<String,Object>>();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("auId", "0");
        map.put("parentId", "-1");
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("auId", "1");
        map1.put("parentId", "0");
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("auId", "2");
        map2.put("parentId", "1");
        Map<String, Object> map3 = new HashMap<String, Object>();
        map3.put("auId", "3");
        map3.put("parentId", "2");
        Map<String, Object> map4 = new HashMap<String, Object>();    
        map4.put("auId", "4");
        map4.put("parentId", "3");
        Map<String, Object> map5  = new HashMap<String, Object>();    
        map5.put("auId", "44");
        map5.put("parentId", "3");
        Map<String, Object> map6  = new HashMap<String, Object>();    
        map6.put("auId", "55");
        map6.put("parentId", "4");
        allCategoryList.add(map);
        allCategoryList.add(map1);
        allCategoryList.add(map2);
        allCategoryList.add(map3);
        allCategoryList.add(map4);
        allCategoryList.add(map5);
        allCategoryList.add(map6);
        String categoryAuId = "55";
        parentCategoryList = new ArrayList<Map<String,Object>>();
        List<Map<String, Object>> rMap = getParentCategory(allCategoryList, categoryAuId);
        System.out.println("rMap="+rMap);
    }
 
    private static List<Map<String, Object>> getParentCategory(List<Map<String, Object>> allCategoryList, String categoryAuId) {
        for (Map<String, Object> category : allCategoryList) {
            // 判断是否存在父节点
            if (category.get("auId").toString().equals(categoryAuId)) {
                // 递归遍历上一级
                getParentCategory(allCategoryList, category.get("parentId").toString());
                parentCategoryList.add(category);
            }
        }
        System.out.println("parentCategoryList=" + parentCategoryList);
        return parentCategoryList;
    }
}
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值