广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java树结构stream工具类的示例代码详解
  • 524
分享到

java树结构stream工具类的示例代码详解

java树结构工具类java树结构stream 2022-11-13 04:11:32 524人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

菜单实体类 package com.example.demo.entity; import lombok.AllArgsConstructor; import lombok.Bu

菜单实体类

package com.example.demo.entity;
 
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Menu {
    
    public Integer id;
     * 名称
    public String name;
     * 父id ,根节点为0
    public Integer parentId;
     * 子节点信息
    public List<Menu> childList;
    public Menu(Integer id, String name, Integer parentId) {
        this.id = id;
        this.name = name;
        this.parentId = parentId;
    }
}

生成树结构工具

package com.example.demo.util;
 
import cn.hutool.JSON.jsONUtil;
import com.example.demo.entity.Menu;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class TreeUtil {
    
    public static List<Menu> getChildrens(Menu root, List<Menu> all) {
        List<Menu> children = all.stream().filter(m -> {
            return Objects.equals(m.getParentId(), root.getId());
        }).map(
                (m) -> {
                    m.setChildList(getChildrens(m, all));
                    return m;
                }
        ).collect(Collectors.toList());
        return children;
    }
     * @param parentId 父节点id
     * @param menus 菜单集合
     * @return 返回id等于parentId的子孙节点树结构 (不包含id等于parentId的节点)
    public static List<Menu> getTree(Integer parentId, List<Menu> menus) {
        //获取父节点
        List<Menu> tree = menus.stream().filter(m -> Objects.equals(parentId,m.getParentId())).map(
                    m.setChildList(getChildrens(m, menus));
        return tree;
    public static void main(String... args) {
        //模拟从数据库查询出来
        List<Menu> menus = Arrays.asList(
                new Menu(1, "0-1", 0),
                new Menu(2, "0-1-2", 1),
                new Menu(3, "0-1-2-3", 2),
                new Menu(4, "0-1-2-4", 2),
                new Menu(5, "0-1-2-5", 2),
                new Menu(6, "0-6", 0),
                new Menu(7, "0-6-7", 6),
                new Menu(8, "0-6-8", 6),
                new Menu(9, "0-6-7-9", 7),
                new Menu(10, "0-6-7-10", 7),
                new Menu(11, "0-11", 0),
                new Menu(12, "0-11-12", 11)
        );
        List<Menu> tree = getTree(1,menus);
        System.out.println("-------转json输出结果-------");
        System.out.println(JSONUtil.parseArray(tree).toString());
}

到此这篇关于java树结构stream工具类的文章就介绍到这了,更多相关java树结构工具类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java树结构stream工具类的示例代码详解

本文链接: https://www.lsjlt.com/news/142911.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作