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<ModelList> subList = new ArrayList<ModelList>(); /**
* 菜单级别
*/
private int flag = 0; public SysModel getModel() {
return model;
}
public void setModel(SysModel model) {
this.model = model;
}
public List<ModelList> getSubList() {
return subList;
}
public void setSubList(List<ModelList> subList) {
this.subList = subList;
}
public void setFlag(int flag) {
this.flag = flag;
} public int getFlag() {
return flag;
}
/**
* 递归方法根据传入的模块集合形成层级菜单
*/
@SuppressWarnings("unchecked")
public ModelList createTree2(List<SysModel> ms) {
//
ModelList node = new ModelList();
ArrayList<SysModel> fu = new ArrayList<SysModel>();// 用来存储parentId为空的父节点;
ArrayList<SysModel> childs = new ArrayList<SysModel>();// 用来存储不是系统的模块
// 将系统和模块菜单分开
for (Iterator<SysModel> 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<SysModel> 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递归菜单树转换成pojo对象的更多相关文章
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- 转换成json字符串,与json字符串转换成java类型都要先转换成json对象
转换成json字符串,与json字符串转换成java类型都要先转换成json对象
- 使用HIBERNATE的SQL查询并将结果集自动转换成POJO
在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...
- 数据库表转换成javaBean对象小工具
package test.utils; import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; ...
- List转换成JSON对象
List转换成JSON对象 1.准备工作 导入jar包 (1)json-lib-2.3-jdk15.jar (2)commons-beanutils-1.8.0.jar (3)commons-coll ...
- List转换成JSON对象报错(五)
List转换成JSON对象 1.具体错误如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- List转换成JSON对象报错(四)
List转换成JSON对象 1.具体错误如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- List转换成JSON对象报错(三)
List转换成JSON对象 1.具体错误如下 Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/e ...
- List转换成JSON对象报错(二)
List转换成JSON对象 1.具体报错如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
随机推荐
- sql server 远程备份 bak 删除
前言: 管理一个公司的一个服务器,最近有一些维护SQLserver数据库活弄,写下防止忘了. 因为公司采用SQL\Redis\MongoDB共用,SQL用来存储基础的结构\权限\等一些杂七杂八的东西. ...
- 32位x86处理器编程导入——《x86汇编语言:从实模式到保护模式》读书笔记08
在说正题之前,我们先看2个概念. 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际"可见" ...
- pom.xml无法引入本地的jar和安装到本地安装maven 错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher
今天maven突然无法引入本地maven库的jar包,导致maven工程出错,然后就准备重装maven ,开始只是将环境变量删除,将之前的压缩包解压,再重新配置环境 变量,可是配置好后在dos窗口 输 ...
- 【Xshell】设置XShell最大的显示行数
选择会话,依次点击“文件"->"属性”,打开“会话属性”窗体 在“会话属性”窗体中,选择“终端”,下图中红框标注的地方是“缓冲区大小”,修改其中的值,其范围在0~2,14 ...
- Thrift笔记(四)--Thrift client源码分析
thrift文件 namespace java com.gxf.demo namespace py tutorial typedef i32 int // We can use typedef to ...
- kafka自定义序列化器
<kafka权威指南> Customer.java public class Customer { private int customId; private String custome ...
- TensorFlow入门:安装常用的依赖模块
TensorFlow运行中常用到一些Python第三方模块: numpy 存储和处理大型矩阵的科学计算包 maplotlib 最著名的绘图库 jupyter scikit-image 图像预处理 li ...
- struts2====之=======初识struts
---恢复内容开始--- 1.什么是web框架? 目前应用得较多的三种服务器瑞页面描写技术就是ASP,JSP和PHP.J S P通过在HTMLJî面 文件中嵌入J a v a脚本代码,从而实现动态网页 ...
- The eighteen day
27th Nov 2018 Setting goals is the first step in turning the invisible into the visiable ---Tony R ...
- HTML 5网页设计入门必读(书)
今天看了一本由人民邮电出版社出版.邢薇薇 郭俊飞 王雪翻译的<HTML 5网页设计入门必读>,在此整理一下知识点,以及写一些自己的读后感. 本书的开章还是和大部分HTML 5书籍一样,用极 ...