菜单转换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中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值