微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java递归菜单树转换成pojo对象

这篇文章介绍了java递归菜单树转换成pojo对象的具体实现,有需要的朋友可以参考一下

复制代码 代码如下:

  package com.cjonline.foundation.authority.pojo;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

import org.apache.log4j.Logger;

import com.cjonline.foundation.util.CheckNullEmpty;

/**

 * 实现递归的帮助类,最终的结果可以描述成如下:

 * 根(root)

 * --1(子系统1)

 * -----1.1

 * -------1.1.1

 * -------1.1.2

 * ------- ....

 * -----1.2

 * --2(子系统2)

 * -----2.1

 * -------2.1.1

 * -------2.1.2

 * ------- ....

 * -----2.2

 */

public class ModelList implements java.io.Serializable {

    private static final Logger logger = Logger.getLogger(ModelList.class);

    private static final long serialVersionUID = 6384598893693849820L;

    /**

     * model代表当前模块

     */

    private SysModel model;

    /**

     * models代表当前模块下面的子模块,

     */

    private List subList = new ArrayList();

    /**

     * 菜单级别

     */

    private int flag = 0;

    public SysModel getModel() {

        return model;

    }

    public void setModel(SysModel model) {

        this.model = model;

    }

    public List getSubList() {

        return subList;

    }

    public void setSubList(List subList) {

        this.subList = subList;

    }

    public void setFlag(int flag) {

        this.flag = flag;

    }

    public int getFlag() {

        return flag;

    }

    /**

     * 递归方法根据传入的模块集合形成层级菜单

     */

    @SuppressWarnings("unchecked")

    public ModelList createTree2(List ms) {

        //

        ModelList node = new ModelList();

        ArrayList fu = new ArrayList();// 用来存储parentId为空的父节点;

        ArrayList childs = new ArrayList();// 用来存储不是系统的模块

        // 将系统和模块菜单分开

        for (Iterator it = ms.iterator(); it.hasNext();) {

            SysModel mode = (SysModel) it.next();

            String parentId = mode.getParentId();

            if (parentId == null || parentId.equals("")) {

                fu.add(mode);

            } else {

                childs.add(mode);

            }

        }

        //由于是多个子系统,首先要找出有多少个子系统

        for (SysModel model : fu) {

            ModelList node1 = new ModelList();

            node1.setFlag(0);

            node1.setModel(model);

            node.subList.add(node1);

            appendChild(node1, childs);

        }

        return node;

    }

    /**

     * node节点 childs为所以系统下的子节点

     */

    public void appendChild(ModelList node, List childs) {

        if (node != null) {

            String systemId = node.getModel().getSystemId();

            String smid = node.getModel().getSysModuleId();

            int flag = node.getFlag();

            if (childs != null && childs.size() > 0) {

                for (SysModel model : childs) {

                    String systemId2 = model.getSystemId();

                    String parentId2 = model.getParentId();

                    if (systemId.equals(systemId2)) {

                        if (parentId2.equals(smid)) {

                            ModelList child = new ModelList();

                            child.setModel(model);

                            child.setFlag(flag + 1);

                            node.getSubList().add(child);

                            appendChild(child, childs);

                        }

                    }

                }

            }

        }

    }

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐