JAVA8 之递归实现
2023-12-28 14:06:25
Java8 简单实现递归 (树形展示)
/**
* 获取选择弹窗
* @param prodClassNm 某一层条件 TODO
* @param prodType 某类型
* @return
*/
public List<ProdClassSelectPopVo> getProdClassSelectPop(String prodClassNm, String prodType) {
List<ProdClassSelectPopVo> treeList = new ArrayList<>();
// 获取所有商品分类
List<ProdClassSelectPopVo> allList = mproductClassListDao.getProdClassSelectPop(prodType);
if(CollectionUtil.isNotEmpty(allList)){
// 1、获取所有数据中过滤一级菜单 2、Map中通过递归函数获取一级节点中的子节点列表
treeList = allList.stream().filter(subNode -> StringUtils.isNullOrEmpty(subNode.getParentClass())
&& (subNode.getId() + "/").equals(subNode.getPath()))
.map(m -> getChild(m,allList,prodClassNm)).collect(Collectors.toList());
}
if(StringUtils.isNotEmpty(prodClassNm)){
treeList = treeList.stream().filter(f -> CollectionUtil.isNotEmpty(f.getChildren().stream()
.filter(item -> item.getProdClassNm().contains(prodClassNm)).collect(Collectors.toList()))
).collect(Collectors.toList());
}
return treeList;
}
/**
* 递归辅助函数
* @param parent 上级节点
* @param allList 所有数据
* @return
*/
private ProdClassSelectPopVo getChild(ProdClassSelectPopVo parent,List<ProdClassSelectPopVo> allList,String prodClassNm){
List<ProdClassSelectPopVo> treeVo = allList.stream()
.filter(subNode -> StringUtils.isNotEmpty(subNode.getParentClass())
&& subNode.getParentClass().equals(parent.getId())).map(m -> getChild(m,allList,prodClassNm)).collect(Collectors.toList());
// && subNode.getPath().equals(parent.getId() + "/" +subNode.getId() + "/")).collect(Collectors.toList());
//.map(m -> getChild(m,allList))
if(StringUtils.isNotEmpty(prodClassNm)){
treeVo = treeVo.stream().filter(f -> f.getProdClassNm().contains(prodClassNm)).collect(Collectors.toList());
}
parent.setChildren(treeVo);
return parent;
}
文章来源:https://blog.csdn.net/qq_40110781/article/details/135263916
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!