JAVA的树形结构存储数据提取成List

1.DicSonVO 类
@Data
@ApiModel(description = "计划更新涉及的业务单元树形Node")
public class DicSonVO {
    @ApiModelProperty(value = "id")
    private String id;
    @ApiModelProperty(value = "parentId")
    private String parentId;
    @ApiModelProperty(value = "父业务单元影响的业务单元")
    @TableField(exist = false)
    private List<DicSonVO> children;
    private String code;
    private String enumValues;
    private int orderIndex;
    private String isban;
    private String discription1;
    private String discription2;
    private String discription3;
    private String dr;
    private String url;
}

2.DicSonDTO 类
@Data
public class DicSonDTO extends BasePO {
    private String dicId;
    private String code;
    private String enumValues;
    private String parentId;
    private int orderIndex;
    private String isban;
    private String discription1;
    private String discription2;
    private String discription3;
    private String dr;
    private String url;
}
3.组装树形结构成
        //1 查询所有一级业务单元 parent_id=,返回一级业务单元list集合
        List<DicSonDTO> oneFormByDicList = formByDic.stream()
                .filter(unit -> StringUtils.isEmpty(unit.getParentId()) && StringUtils.isBlank(unit.getParentId()))
                .collect(Collectors.toList());
        //2 一级业务单元list集合遍历,得到每个一级业务单元
        for(DicSonDTO oneUnit : oneFormByDicList) {
            //一级业务单元DicSonDTO --- DicSonVO
            DicSonVO oneUnitVo = new DicSonVO();
            BeanUtil.copyProperties(oneUnit,oneUnitVo);

            //3 获取每个一级业务单元里面所有二级业务单元 id 和 parent_id比较  一级业务单元id  和  其他业务单元parent_id
            List<DicSonDTO> twoUnitList = formByDic.stream()
                    .filter(unit -> unit.getParentId().equals(oneUnit.getId()))
                    .collect(Collectors.toList());

            //4 把一级业务单元里面所有二级业务单元获取到,封装一级业务单元children集合里面
            List<DicSonVO> children = new ArrayList<>();
            for(DicSonDTO twoUnit : twoUnitList) {
                DicSonVO twoUnitVo = new DicSonVO();
                BeanUtil.copyProperties(twoUnit,twoUnitVo);
                children.add(twoUnitVo);
            }
            oneUnitVo.setChildren(children);
            //把每个封装好的一级业务单元放到最终listUnit集合
            listUnit.add(oneUnitVo);
        }
        Map<String, DicSonVO> dicMap = Optional.ofNullable(
                listUnit.stream()
                        .collect(Collectors.toMap(DicSonVO::getCode, Function.identity()))
        ).orElse(new HashMap<>());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值