快速构建树
// 核心思想是设置每个节点的子节点,通过引用构建树
Map<Integer, List<CategoryVO>> children = all.stream().filter(v -> v.getFid() != 0).collect(Collectors.groupingBy(CategoryVO::getFid));
for (CategoryVO vo : all) {
// 所有节点,获取当前节点的子节点并设置
vo.setChildren(children.get(vo.getCategoryId()));
}
// 根节点可以有多个
return all.stream().filter(node -> node.getFid() == 0).collect(Collectors.toList());