【java8 stream 集合转为树结构】
2023-12-18 20:14:35
集合转为树结构
单表,数据有层级,通过parentId关联
先需要获取层级树类型的数据,但不想多次查询,需要减少查询sql次数
1.单表查询所有有效数据
2.逻辑层处理成树结构
public List<CheckVo> fun(){
List<CheckVo> result = new ArrayList<>();
// 查询 所有有效的数据
List<CheckPo> checkPoList = super.getBaseMapper().selectList(Wrappers.<CheckPo>lambdaQuery()
.eq(CheckPo::getStatus, StatusEnum.VALID.getValue()));
List<CheckVo> checkVoList = CheckBeanConvertUtil.INSTANCE.getCheckVo(checkPoList);
if(CollUtil.isNotEmpty(checkVoList)){
result = checkVoList.stream().filter(item->item.getParentId()==null)
.map(item->{
item.setChildren(getChildren(item,checkVoList));
return item;
}).collect(Collectors.toList());
}
return result;
}
// 递归方法
private List<CheckVo> getChildren(CheckVo vo,List<CheckVo> checkVoList){
return checkVoList.stream()
.filter(item->item.getParentId()!=null && item.getParentId().equals(vo.getId()))
.map(item->{
item.setChildren(getChildren(item,checkVoList));
return item;
}).collect(Collectors.toList());
}
文章来源:https://blog.csdn.net/qq_43367379/article/details/135068476
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!