递归生成分类树

public List GetAllTreeByLoop1(Long pid){
// 一次性加载所有分类,避免频繁SQL
List originalList;

if(0L == pid){
originalList = mapper.getAll();
} else {
originalList = mapper.getTypes(pid);
}

Map typeMap = new HashMap<>();
for(ProductType productType : originalList){
typeMap.put(productType.getId(), productType);
}

// 定义目标列表
List treeList = new ArrayList<>();

// 第一次循环顶级分类
for(ProductType productType : originalList){
if(productType.getPid().equals(pid)){
treeList.add(productType);
} else {
// 子节点
// 获取父节点对象
ProductType parentType = typeMap.get(productType.getPid());
// 将当前分类 添加到父对象的子节点列表

	 parentType.getChildren().add(productType);
      
   }

}

return treeList;

}

你可能感兴趣的:(递归生成分类树)