list集合使用stream完成父子结构,超简单

135 阅读1分钟

直接使用cv大法即可实现

//根据角色查记录集合
List<SysMenu> menus = sysMenuDao.listMenuByRoleId(single.getRoleId());
if(!CollectionUtils.isEmpty(menus)){
    handleMenuName(menus);   
}


private void handleMenuName(List<SysMenu> menus){
    if(CollectionUtils.isEmpty(menus)){
        return;
    }
    eachMenu(menus);
}

private void eachMenu(List<SysMenu> menus){
    menus.stream().forEach(menu->{
        List<SysMenu> childMenuList = menus.stream().filter(p -> StringUtils.equals(p.getParentMenuId(), menu.getId())).collect(Collectors.toList());
        if(CollectionUtils.isEmpty(childMenuList)){
            return;
        }
        menu.setChildList(childMenuList);
        eachMenu(childMenuList);
    });
}