美文网首页
两步循环构造不限层级结构树

两步循环构造不限层级结构树

作者: Jinx菜鸟之路 | 来源:发表于2020-07-26 08:18 被阅读0次

两步循环构造不限层级结构树

通常构造不限层级的树结构做法都是使用递归,使用此方法都需要套用多重循环来进行处理。

最近研究出来使用两步循环就可拼装出不限层级结构的树,如下:

/** *@description: *@author: chujg *@create: 2019-08-05 09:25 **/

@Data

public classNodeVo{

    private int id;

    private String name;

    private int parentId;

    private int order;

    private List<NodeVo> son;

}

main 方法

/** *@description: *@author: chujg *@create: 2019-08-05 09:24 **/

public classTestNode{

    publicstaticvoidmain(String[] args){

        List<NodeVo> nodeAll = new ArrayList<>();

        NodeVo vo = new NodeVo();

        vo.setId(1);

        vo.setName("node1");

        vo.setOrder(1);

        nodeAll.add(vo);

        NodeVo vo3 = new NodeVo();

        vo3.setId(3);

        vo3.setName("node3");

        vo3.setParentId(1);

        vo3.setOrder(1);

        nodeAll.add(vo3);

        NodeVo vo2 = new NodeVo();

        vo2.setId(2);

        vo2.setName("node2");

        vo2.setParentId(1);

        vo2.setOrder(2);

        nodeAll.add(vo2);

        NodeVo vo4 = new NodeVo();

        vo4.setId(4);

        vo4.setName("node4");

        vo4.setParentId(2);

        vo4.setOrder(1);

        nodeAll.add(vo4);

        Map<Integer, NodeVo> map = new LinkedHashMap<>();

        List<NodeVo> rootNode = new ArrayList<>();

        nodeAll.forEach(i -> {

            map.put(i.getId(), i);

            if (i.getParentId() == 0) {

                rootNode.add(i);

            }

        });

        nodeAll.forEach(i -> {

            NodeVo parentNode = null;

            if (i.getParentId() != 0) {

              parentNode = map.get(i.getParentId());

                List<NodeVo> sonList = parentNode.getSon();

              if (sonList == null) {

                  sonList = new ArrayList<>();

              }

                sonList.add(i);

                parentNode.setSon(sonList);

            }

        });

        System.out.println(rootNode);

    }

}

相关文章

  • 嵌套循环,不限制次数的循环结构

    嵌套循环 不限制次数的循环结构

  • 框架

    1、逻辑树:层级构造 新战略部署 组织结构图 分类树 2、组合矩形:组合 梳理要素 优劣清单 评分表 责任分工表/...

  • 纯代码NSOutlineView

    在mac开发中,常常需要用类似列表的结构来展示数据,最好还有层级,类似于树,比如族谱、菜单等层级结构数据。这个时候...

  • OutlineView

    在mac开发中,常常需要用类似列表的结构来展示数据,最好还有层级,类似于树,比如族谱、菜单等层级结构数据。这个时候...

  • CART 分类与回归树

    本文结构: CART算法有两步 回归树的生成 分类树的生成 剪枝 CART - Classification an...

  • Java 树形结构构造器

    Java 树形结构构造器 1. 创建树型结构节点基类 2. 树型结构构造器 先生成父节点然后调用buildChil...

  • 数据结构之树

    一个形象的例子 比如我们的一个View的层级结构,如果这个层级结构很复杂的话,你可以想象下是不是和树这个数据结构很...

  • 绘图动画

    CAAnimation 层级结构CAAnimation层级结构 协议: NSCoding, NSCopying, ...

  • 简易行为树

    行为树(Behavior Tree)是一棵用于控制AI决策行为的、包含了层级节点的树结构 主要就是:用树的结构解决...

  • 读书 【数据与算法】第三章 树与二叉树

    一、 树 基本概念 表现为以分支关系定义的层级关系,非线性数据结构。 1.1 定义 与 性质 树:递归的数据结构一...

网友评论

      本文标题:两步循环构造不限层级结构树

      本文链接:https://www.haomeiwen.com/subject/xypalktx.html