当前位置:  编程技术>java/j2ee

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

    来源: 互联网  发布时间:2014-10-26

    本文导语:  代码如下:  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;/** * 实现递归的帮助类,最终的结...

代码如下:

  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);
                        }
                    }
                }
            }
        }
    }
}
 

    
 
 

您可能感兴趣的文章:

  • 请问java里可有递归吗?
  • 在java里,递归的程序怎么写??麻烦随便写个例子出来。谢谢!
  • Java递归 遍历目录的小例子
  • java 用递归获取一个目录下的所有文件路径的小例子
  • java能否实现递归调用,入门级问题!!欢迎大家讨论!
  • java 汉诺塔Hanoi递归、非递归(仿系统递归)和非递归规律 实现代码
  • 快速排序算法原理及java递归实现
  • Java递归算法的使用分析
  • 关于数据库查询的java递归程序怎么写?最好有例子
  • java 递归深入理解
  • 如何用java实现递归?给n个整数,写出计算结果为24的算法,要所有数都用上,只用加减乘除实现
  • 用Java如何在有菜单和按钮的情况下显示JPG图形文件,而菜单和按钮仍可见????
  • 用Java如何在有菜单和按钮的情况下显示JPG图形文件(要求有垂直和水平的滚动条),而菜单和按钮仍可见????
  • 急,急,急!!!高分求购java实现动态树型菜单的源代码
  • 我刚学java我想问一下,如果做下拉菜单,应该咋做?最好能给俺详细讲一下,俺是菜鸟!
  • 如何 点击JAVA应用程序菜单里一选项,就打开一个HTML文件!有哪几种方法?
  • 怎么菜单拖下来就还原不回去了---关于Java的窗口重绘问题
  • java中怎么实现在windows中那样点击打开菜单就能弹出选择文件的列表框?
  • android 如何在 主菜单 来一键点图标, 播放视频(产品广告),只要驱动部分的JAVA层我不写
  • JAVA初学者,在JDK中怎样写菜单事件?
  • java实现微信公众平台自定义菜单的创建示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java tomcat实现Session对象的持久化原理及配置方法介绍
  • 写一个方法,向它传递一个对象,循环打印出对象层次结构中的所有类?thinking in java里面的一个习题不知道如何做请教高手?
  • 各位高手知道在JAVA中如何用一个名称创建一个对象实例,并调用其方法,注意:在编写代码时并不知要创建的对象的类名,也并不知方法名
  • java里基本数据类型是什么?对象么?
  • Java中所有东西都是对象吗?
  • 能在JavaScript中访问Jsp页面的Java对象?
  • Java能调用OLE对象吗?怎样利用Java生成Excel报表?
  • 关于java中类和对象的问题.
  • Java 对象哈希映射库 JOhm
  • 通用并发 Java 对象池 Vibur Object Pool
  • Java对象数据库 ObjectDB
  • java applet和servlet之间是否可以传递对象?
  • Java对象转换库 EZMorph
  • 请问java.sql包中 preparedStatement 对象的setString(int parameterIndex,java.lang.String x)方法怎么用?
  • java.util类对象的DATE方法为何不能用? <%=new java.util.date()%>,在页面中是这样写的,服务器用的是Resin.
  • java如何调用word文档对象??
  • 如何检测一个java.sql.ResultSet对象是否eof?
  • Java对象的SQL接口 JoSQL
  • 如何在JAVA方法中返回多个对象,谁能解决给200分。
  • Java对象序列化框架 Kryo
  • 在java中怎么知道一个对象占用内存的字节数?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3