树结构生成示例模板2种
方式一:
public List<DevCategory> list() {
List<DevCategory> allList = devCategoryDao.findAllData();
return allList.stream().filter(s -> s.getPid() == null || s.getPid().isBlank()).peek(item ->
findChildren(item, allList)).toList();
}
private void findChildren(DevCategory devCategory, List<DevCategory> allList) {
List<DevCategory> child = new ArrayList<>();
allList.forEach(s -> {
if (Objects.equals(String.valueOf(devCategory.getId()), s.getPid())) {
child.add(s);
findChildren(s, allList);
}
devCategory.setChildren(child);
});
}
方式二:
List<DevCategory> allList = devCategoryDao.findAllData();
return allList.stream().filter(s -> s.getPid() == null || s.getPid().isBlank())
.peek(item -> item.setChildren(findChildren(item.getId(), allList))).collect(Collectors.toList());
private List<DevCategory> findChildren(Long id, List<DevCategory> allList) {
return allList.stream().filter(s -> {
return Objects.equals(String.valueOf(id), s.getPid());
}).peek(item -> item.setChildren(findChildren(item.getId(), allList))).collect(Collectors.toList());
}