查询子级菜单递归查询具体实现方法1(JAVA8):
public void getTreeCategory() {
//查询所有的分类
List<VipGoodsCategory> vipGoodsCategoryList = vipGoodsCategoryService.listGoodsCategory();
//查询顶级分类
List<VipGoodsCategory> top = vipGoodsCategoryList.stream().filter(x -> StringUtils.isEmpty(x.getParentId()) || x.getParentId().equals("-1")).collect(Collectors.toList());
//parentId作为key,子级作为value组成的map
Map<String, List<VipGoodsCategory>> allMap = vipGoodsCategoryList.stream().collect(Collectors.groupingBy(VipGoodsCategory::getParentId));
//递归查询
List<VipGoodsCategory> list = this.treeCategoryData(top, allMap);
for (VipGoodsCategory category : list) {
System.out.println(category.getAuId()+","+category.getCategoryName()+","+category.getParentId()+","+category.getChildren().get(0).getCategoryName());
}
}
public List<VipGoodsCategory> treeCategoryData(List<VipGoodsCategory> top, Map<String, List<VipGoodsCategory>> allMap) {
//遍历
top.forEach(category -> {
List<VipGoodsCategory> temp = allMap.get(category.getAuId());
if (temp != null && !temp.isEmpty()) {
category.setChildren(temp);
t