您的位置 首页 java

java 树结构2 非递归生成树

上篇文章写了一下递归生成树形数据的实现,本文写一下非 递归法 方式生成树的方法。

话不多说,show code:

pid即要查询的节点id,all为要生成树结构的数据

 public List<SysAreaVo> createTree3(String pid, List<SysAreaVo> all) {
         Map <String, List<SysAreaVo>> map = all.stream().collect(Collectors.groupingBy(SysAreaVo::getParentCode));
        List<SysAreaVo> data = all.stream().filter(d -> map.containsKey(d.getAreaCode())).collect(Collectors.toList());
        for (SysAreaVo area : data) {
            area.setChildren(map.get(area.getAreaCode()));
        }
        return data.stream().filter(sa -> pid.equals(sa.getParentCode())).collect(Collectors.toList());
    }  

简单介绍下思路:

  1. 按照父节点将数据进行分组;
  2. 用上一步获取到的父节点集合过滤出有子集的数据;
  3. 循环所有有子集的数据,将子集赋值给当前数据;
  4. 第三步完成以后,所有数据如果有下一级的话,都会得到自己的子集数据;过滤出第一层的数据,即为要返回的数据。

本质上就是处理子集数据而已

文章来源:智云一二三科技

文章标题:java 树结构2 非递归生成树

文章地址:https://www.zhihuclub.com/196253.shtml

关于作者: 智云科技

热门文章

网站地图