菜单转换Java_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);
}
}
}
}
}
}
}
更多java递归菜单树转换成pojo对象相关文章请关注PHP中文网!
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
菜单转换Java_java递归菜单树转换成pojo对象相关推荐
- Spring的@RequestBody非常牛x,可以将提交的json直接转换成POJO对象。
Spring的@RequestBody非常牛x,可以将提交的json直接转换成POJO对象.
- MySQL部门或菜单父子节点递归实现树查询
目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,可以在一句SQL内实现树的递归查询 下面给一个小示例,后续在贴上调用的代码(代码会贴在最后请注意) MySQL递归查询所有子 ...
- 任意进制转换java_Java 任意进制转换(两种方式)
本文提供两种Java实现任意进制转换的方法: 方法一:利用 Integer 实现进制转换 1. Integer类的方法toBinaryString(),Integer.toOctalString(), ...
- 二叉树-树转二叉树 使用队列,编写transfrom函数,将普通树转换成对应的二叉树。
树转二叉树 使用队列,编写transfrom函数,将普通树转换成对应的二叉树.二叉树的相关定义如下: typedef int DataType; typedef struct Node{DataTyp ...
- 算法基础11 —— 树入门(二叉树的遍历以及构造 + 普通树转换成二叉树 + 例题 + 二叉树的一些操作)
字符二叉树的遍历 对于以上二叉树 先序遍历为(根左右) : ABCDEFG 中序遍历为(左根右) : CBEDAFG 后序遍历为(左右根) : CEDBGFA 层序遍历:(从左往右.从上往下) ABF ...
- 如何将一棵树转换成二叉树
题目: 如何将一棵树转换成二叉树? 解答: 1. 将 节点的孩子 放在左子树: 2. 将 节点的兄弟 放在右子树. 延伸: 任何一棵树都可以表示成二叉树,并不是任何一棵二叉树都可以表示成树.那么树多还 ...
- 使用递归将十进制转换成任意进制(Number Conversion)
关于递归 什么是递归? 说白了,就是函数自己调用自己,然后被调用的函数继续调用自己,这将无限循环下去,除非代码中有终止调用链的的内容. 解释一下递归的所经历的过程 递归需要有边界条件.递归前进段和递归 ...
- C代码实现将一颗树转换成二叉树(给定树)
将树转换成二叉树的方法: 1.加线.在所有的兄弟结点之间加一条线. 2.去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除其他孩子结点之间的连线. 3.调整.以树的根结点为轴心,将整个树调节一 ...
- jquery对象PHP转换,JavaScript_jQuery对象与DOM对象之间的相互转换,1、jQuery对象转换成DOM对象
jQue - phpStudy...
jQuery对象与DOM对象之间的相互转换 1.jQuery对象转换成DOM对象 jQuery对象不能使用DOM中的方法,但如果对jQuery对象所提供的方法不熟悉,或者jQuery没有封装想要的方法 ...
最新文章
- 二进制的mysql怎么装_使用二进制演示MySQL安装步骤
- mvc5入门示例博客(有惊喜)
- python相关概念
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
- 德意志银行CEO:将逐渐用 AI 替代人工,银行决不会一成不变 凤凰科技 09-08 20:41 原标题:德意志银行CEO:将逐渐用 AI 替代人工,银行决不会一成不变 雷锋网AI金融评论报道,外媒i
- php的yii框架开发总结2
- ubuntu 下使用mysql
- Servlet详细讲解
- Android 自定义View自定义属性的声明
- apache配置文件“注解内容”全翻译
- VGG19 基本网络结构图
- matlab qpsk 星座图,QPSK误码率和星座图MATLAB仿真
- opencv获取图像的像素值
- iconfont添加新图标_IconFont图标引用的方法步骤(代码)
- Aras Innovator: AML包
- termux python 打开摄像头_python+opencv 电脑调用手机的摄像头
- java 条形码校验_java 实现条形码ENA-13校验码计算方法
- 方法finalizer()的应用
- 云服务器是widows7系统,云服务器win7系统
- 怎么能避免浏览器请求超时_浏览器所允许的http请求最长的响应时间?
热门文章
- Python3.7在 Geany下编译出现SyntaxError: Non-UTF-8 code starting with '\xb3'错误及实例化方法时提示没有实参的解决方法。
- mysql语句将两列合并一列_mysql – SQL选择将两列合并为一列
- C语言程序设计实践教程 邹显春pdf
- 笔记本win10正在更新怎么关闭计算机,教你win10如何关闭自动更新
- 计算机专硕_2021年北京科技大学计算机专硕考研初复试考研经验分享、择校备考分析指导...
- 当button具有disabled属性时,el-tooltip也失效。解决办法
- 岂无远道思亲泪,不及高堂念子心,堂上二老既活佛,何用灵山朝世尊。
- 由于轮播图片超宽造成的影响
- 原创 使用docker 安装CVAT并使用
- itext Pdf页眉/页脚/水印