栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java生成树形结构的算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java生成树形结构的算法

@Override
public List listWithTree() {
    // 1 查出所有分类
    List entities = baseMapper.selectList(null);
    // 2 组装成父子的树形结构
    List level1Menus = entities.stream().filter(categoryEntity ->
            categoryEntity.getParentCid().longValue() == 0
    ).map((menu)->{
        menu.setChildren(getChildrens(menu,entities));
        return menu;
    }).sorted((menu1,menu2)->{
        return (menu1.getSort() == null?0:menu1.getSort()) - (menu2.getSort() == null?0:menu2.getSort());
    }).collect(Collectors.toList());
    return level1Menus;
}

// 递归查找所有菜单的子菜单
private List getChildrens(CategoryEntity root, List all) {
    List children = all.stream().filter(categoryEntity -> {
        return categoryEntity.getParentCid().longValue() == root.getCatId().longValue();  // 注意此处应该用longValue()来比较,否则会出先bug,因为parentCid和catId是long类型
    }).map(categoryEntity -> {
        // 1 找到子菜单
        categoryEntity.setChildren(getChildrens(categoryEntity, all));
        return categoryEntity;
    }).sorted((menu1, menu2) -> {
        // 2 菜单的排序
        return (menu1.getSort() == null?0:menu1.getSort()) - (menu2.getSort() == null?0:menu2.getSort());
    }).collect(Collectors.toList());
    return children;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973133.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号