JAVA 生成树结构

一、树结构用来做什么?

树结构多用于菜单、部门、公司等父子集结构的数据。

二、使用示例

  /**
     *获取树结构数据
     * @author L_dy
     * @date 2022/4/11 14:48 
     * @return java.util.List<com.clt.base.menu.domain.Menu>
     */
public List<Menu> childrenMenuList(Menu menu) {
        List<Menu> menuList = new ArrayList<>();//new一个集合,用以存储整个树结构
        List<Menu> menus = new ArrayList<>();
        List<Menu> childrenMenuList = menuMapper.childrenMenuList(menu);//此方法为获取每个父节点
        for (Menu menu1 : childrenMenuList) {
            menus = getNextSubSet(menu1);//以父节点为参数获取下面的所有子、孙节点所生成的树结构
            menu1.setChildrenMenuList(menus);//生成树结构将获取的结构数据存储父节点对象里
            menuList.add(menu1);
        }
        return menuList;
    }

     /**
     *生成树结构
     * @author L_dy
     * @date 2022/4/11 14:48 
     * @return java.util.List<com.clt.base.menu.domain.Menu>
     */
    public List<Menu> getNextSubSet(Menu menu) {
        List<Menu> menus = menuMapper.childrenMenuListByParentId(menu);//以父节点获取子节点
        for (Menu menu1 : menus) {
            List<Menu> nextLevel = getNextLevel(menu1);//获取子节点下的再有的子孙节点
            menu1.setChildrenMenuList(nextLevel);//生成树结构将获取的结构数据存储父节点对象里
        }
        return menus;
    }

     /**
     *获取每个子节点
     * @author L_dy
     * @date 2022/4/11 14:48 
     * @return java.util.List<com.clt.base.menu.domain.Menu>
     */
    public List<Menu> getNextLevel(Menu menu) {
        List<Menu> menus = menuMapper.childrenMenuListByParentId(menu);//以父节点获取子节点
        if (menus.size()!=0){
            for (Menu menu1 : menus) {
                menu1.setChildrenMenuList(getNextLevel(menu1));//生成树结构将获取的结构数据存储父节点对象里
            }
        }
        return menus;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java生成树结构数据,您可以使用Java编程语言中提供的各种数据结构和算法来实现。 下面是一些实现结构数据的常见步骤: 1. 定义节点类 您可以定义一个节点类来表示的每个节点,该类包含一个节点值和对其子节点的引用。 例如,您可以定义一个名为Node的类,其中包含一个value变量和一个children变量,用于存储该节点的值和子节点列表。 以下是Node类的示例代码: ``` public class Node { private int value; private List<Node> children; public Node(int value) { this.value = value; this.children = new ArrayList<Node>(); } public int getValue() { return value; } public List<Node> getChildren() { return children; } public void addChild(Node child) { children.add(child); } } ``` 2. 构建 要构建,请先创建一个根节点,然后为每个子节点创建一个新节点,并将其添加到其父节点的子节点列表中。 例如,以下代码创建一个,其中根节点的值为1,其两个子节点的值为2和3,第一个子节点又有两个子节点,值为4和5。 ``` Node root = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); Node node4 = new Node(4); Node node5 = new Node(5); root.addChild(node2); root.addChild(node3); node2.addChild(node4); node2.addChild(node5); ``` 3. 遍历 您可以使用递归遍历,并按照您的需要执行操作。 例如,以下是一种遍历并打印所有节点值的方式: ``` public void printTree(Node node) { System.out.println(node.getValue()); List<Node> children = node.getChildren(); for (Node child : children) { printTree(child); } } ``` 4. 使用现有库 如果您不想手动实现结构数据,可以使用Java中的现有库,例如Apache Commons Collections或Google Guava。 这些库提供了许多数据结构和算法,包括结构。使用这些库可以更快地实现结构数据,因为它们已经实现了许多与有关的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值