使用递归 构建简单的树形菜单结构
public List<MenuPojo> tree(List<MenuPojo> list){
//获取一级菜单分类
List<MenuPojo> root = list.stream().filter(item -> item.getPId() == 0).collect(Collectors.toList());
list.removeAll(root);
root.forEach(rootItem -> {
getChild(rootItem,list);
});
return root;
}
public void getChild(MenuPojo rootItem,List<MenuPojo> list){
if(hasChlid(rootItem,list)){
//获取二级分类
List<MenuPojo> menuPojoList = list.stream().filter(o -> rootItem.getId().equals(o.getPId())).collect(Collectors.toList());
if(menuPojoList.size() > 0){
rootItem.setChildren(menuPojoList);
list.removeAll(menuPojoList);
//使用递归
menuPojoList.forEach(menu -> getChild(menu,list));
}
}
}
public boolean hasChlid(MenuPojo rootItem,List<MenuPojo> list){
return list.stream().anyMatch(item -> rootItem.getId().equals(item.getPId()));
}