java使用递归方法构建树

本文详细介绍了如何使用Java递归方法,通过Node类的实例TIotSysArea,构建树形结构。通过buildByRecursive和findChildren方法实现树的动态组织,适用于层级关系的数据存储和展示。
摘要由CSDN通过智能技术生成

java递归语法使用

你好! node实体类递归建tree。

node类

@Data
public class TIotSysArea {

    private Long id;

    private String name;

    private String code;

    private Integer level;

    private Long parentId;

    private String cascadeIds;

    private String remark;

    private String tag;

    private Long orgId;

    private Integer status;

    private Integer isUsed;

    private Long managerId;

    private String managerName;

    private Integer sort;

    private Long createTime;

    private Long updateTime;

    @ApiModelProperty(value = "节点名称")
    private String title;

    @Transient
    @ApiModelProperty(value = "该节点唯一标识")
    private String key;

    @ApiModelProperty(value = "是否是最后一级节点")
    private Boolean isLeaf;

    @ApiModelProperty(value = "子级节点集合")
    private List<TIotSysArea> children;

    @ApiModelProperty(value = "搜索内容")
    private String searchContent;

    @ApiModelProperty(value = "区域对应的所有父级区域")
    private Map<Integer, TIotSysArea> parentMap;

    @ApiModelProperty(value = "蜂鸟地图区域元素id")
    private Long mapAreaId;


}

使用递归方法建树

*
 * @author wsj
 * @time 2020-02-11 12:31
 **/
public class TreeBuilderOne {
        /**
         * 使用递归方法建树
         * @param treeNodes
         * @return
         */
        public List<TIotSysArea> buildByRecursive(List<TIotSysArea> treeNodes) {
            List<TIotSysArea > trees = new ArrayList<>();
            for (TIotSysArea treeNode : treeNodes) {
                if (treeNode.getParentId()== -1) {
                    TIotSysArea children=findChildren(treeNode,treeNodes);
                    trees.add(children);
                }
            }
            return trees;
        }
        /**
         * 递归查找子节点
         * @param treeNodes
         * @return
         */
        public  TIotSysArea findChildren(TIotSysArea treeNode,List<TIotSysArea> treeNodes) {
            for (TIotSysArea it : treeNodes) {
                if(treeNode.getId().equals(it.getParentId())) {
                    if (treeNode.getChildren() == null) {
                        treeNode.setChildren(new ArrayList<>());
                    }
                    treeNode.getChildren().add(findChildren(it,treeNodes));
                }
            }
            return treeNode;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值