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

处理父子结构数据不使用递归处理父子结构数据

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

处理父子结构数据不使用递归处理父子结构数据

不使用递归处理父子结构数据

有些时候,可以不使用递归处理父子结构的数据,比如一些菜单查询

废话不多说,直接上代码

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class App {


    public static void main(String[] args) {

        Node node1 = new Node(1, 0);
        Node node2 = new Node(2, 1);
        Node node3 = new Node(3, 1);
        Node node4 = new Node(4, 2);
        Node node5 = new Node(5, 3);
        Node node6 = new Node(6, 5);
        Node node7 = new Node(7, 5);
        //这个地方是你查出来的父子结构数据
        ArrayList nodes = new ArrayList<>();
        nodes.add(node1);
        nodes.add(node2);
        nodes.add(node3);
        nodes.add(node4);
        nodes.add(node5);
        nodes.add(node6);
        nodes.add(node7);


        //1、创建一个Map,将node id为key,node为value设置进去
        Map cache = new HashMap<>();

        for (Node node : nodes) {
            cache.put(node.id,node);
        }

        //2、按照父子结构去设置children,并且找到parentId为0作为根节点

        Node rootNode = null;

        for (Node node : nodes) {
            if (node.parentId == 0){
                rootNode = node;
            }else{
                Node parent = cache.get(node.parentId);
                if (parent.children == null){
                    parent.children = new ArrayList<>();
                }
                parent.children.add(node);
            }

        }

        //得出一个拼接好父子结构的根节点
        System.out.println(rootNode);

    }


    static class Node {

        private int id;

        private List children;

        private int parentId;


        public Node(int id, int parentId) {
            this.id = id;
            this.parentId = parentId;
        }
    }


}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/685731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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