Java 实现多级菜单分类
@Override
public List<CategoryEntity> listWithTree() {
List<CategoryEntity> list = baseMapper.selectList(null);
return list.stream()
.filter(item -> item.getParentCid() == 0)
.peek(item -> item.setChildren(getChildes(item, list)))
.sorted(Comparator.comparingInt(item -> (item.getSort() == null ? 0 : item.getSort())))
.collect(Collectors.toList());
}
private List<CategoryEntity> getChildes(CategoryEntity current, List<CategoryEntity> all) {
return all.stream()
.filter(item -> item.getParentCid().equals(current.getCatId()))
.peek(item -> item.setChildren(getChildes(item, all)))
.sorted(Comparator.comparingInt(item -> (item.getSort() == null ? 0 : item.getSort())))
.collect(Collectors.toList());
}