查询一个list通过stream流 和递归 生成一颗有层级的树
@Override
public List<IndustryCode> getIndustryCodeTree() {
List<IndustryCode> industryCodeList = industryCodeMapper.getIndustryCodeList();
return industryCodeList.stream()
.filter(IndustryCode -> IndustryCode.getRank()==1)
.peek(IndustryCode -> IndustryCode.setChildren(getChildren(IndustryCode,industryCodeList)))
.collect(Collectors.toList());
}
//递归查找 行业代码的下级
private List<IndustryCode> getChildren(IndustryCode root, List<IndustryCode> all) {
return all.stream()
.filter(industryCode -> industryCode.getParentId().equals(root.getCode()))
.peek(industryCode -> industryCode.setChildren(getChildren(industryCode, all)))
.collect(Collectors.toList());