java构造树,多级菜单
2016-06-17 12:17
525 查看
public AboutUsMenuTree getMenuList()
{
// TODO Auto-generated method stub
// 从数据库查询所有节点
List<AboutUsMenu> list = aboutUsMenuDao.queryAll();
//
创建根节点0
AboutUsMenuTree aboutUsMenuTree = new AboutUsMenuTree();
aboutUsMenuTree.setMenuCode("0");
List<AboutUsMenuTree> result = getChild(aboutUsMenuTree, list);
ArrayList<AboutUsMenuTree> tmp = new ArrayList<AboutUsMenuTree>();
//当根节点放入树中后从list里面移除,一直到list的节点都放入树中为止
while (list.size() > 0)
{
for (int i = 0; i < result.size(); i++ )
{
tmp.addAll(getChild(result.get(i), list));
if (list.size() == 0)
{
break;
}
}
result = (List<AboutUsMenuTree>)tmp.clone();
tmp.clear();
}
return aboutUsMenuTree;
}
// 传入各级根节点,获取他的子节点,再放入当前根节点中,返回下级根节点集
private List<AboutUsMenuTree> getChild(AboutUsMenuTree root, List<AboutUsMenu> list)
{
List<AboutUsMenuTree> result = new ArrayList<AboutUsMenuTree>();
for (int i = 0; i < list.size(); i++ )
{
AboutUsMenu aboutUsMenu_child = list.get(i);
if (aboutUsMenu_child.getParentCode().equals(root.getMenuCode()))
{
//拷贝值
AboutUsMenuTree aboutUsMenuTree = new AboutUsMenuTree();
aboutUsMenuTree.setMenuId(aboutUsMenu_child.getMenuId());
aboutUsMenuTree.setMenuName(aboutUsMenu_child.getMenuName());
aboutUsMenuTree.setMenuCode(aboutUsMenu_child.getMenuCode());
aboutUsMenuTree.setOperator(aboutUsMenu_child.getOperator());
aboutUsMenuTree.setUrl(aboutUsMenu_child.getUrl());
aboutUsMenuTree.setDataCreate(aboutUsMenu_child.getDataCreate());
aboutUsMenuTree.setDataUpdate(aboutUsMenu_child.getDataUpdate());
aboutUsMenuTree.setSequence(aboutUsMenu_child.getSequence());
result.add(aboutUsMenuTree);
list.remove(i);
i-- ;
}
}
root.setAboutUsMenuTree(result);
return result;
}
{
// TODO Auto-generated method stub
// 从数据库查询所有节点
List<AboutUsMenu> list = aboutUsMenuDao.queryAll();
//
创建根节点0
AboutUsMenuTree aboutUsMenuTree = new AboutUsMenuTree();
aboutUsMenuTree.setMenuCode("0");
List<AboutUsMenuTree> result = getChild(aboutUsMenuTree, list);
ArrayList<AboutUsMenuTree> tmp = new ArrayList<AboutUsMenuTree>();
//当根节点放入树中后从list里面移除,一直到list的节点都放入树中为止
while (list.size() > 0)
{
for (int i = 0; i < result.size(); i++ )
{
tmp.addAll(getChild(result.get(i), list));
if (list.size() == 0)
{
break;
}
}
result = (List<AboutUsMenuTree>)tmp.clone();
tmp.clear();
}
return aboutUsMenuTree;
}
// 传入各级根节点,获取他的子节点,再放入当前根节点中,返回下级根节点集
private List<AboutUsMenuTree> getChild(AboutUsMenuTree root, List<AboutUsMenu> list)
{
List<AboutUsMenuTree> result = new ArrayList<AboutUsMenuTree>();
for (int i = 0; i < list.size(); i++ )
{
AboutUsMenu aboutUsMenu_child = list.get(i);
if (aboutUsMenu_child.getParentCode().equals(root.getMenuCode()))
{
//拷贝值
AboutUsMenuTree aboutUsMenuTree = new AboutUsMenuTree();
aboutUsMenuTree.setMenuId(aboutUsMenu_child.getMenuId());
aboutUsMenuTree.setMenuName(aboutUsMenu_child.getMenuName());
aboutUsMenuTree.setMenuCode(aboutUsMenu_child.getMenuCode());
aboutUsMenuTree.setOperator(aboutUsMenu_child.getOperator());
aboutUsMenuTree.setUrl(aboutUsMenu_child.getUrl());
aboutUsMenuTree.setDataCreate(aboutUsMenu_child.getDataCreate());
aboutUsMenuTree.setDataUpdate(aboutUsMenu_child.getDataUpdate());
aboutUsMenuTree.setSequence(aboutUsMenu_child.getSequence());
result.add(aboutUsMenuTree);
list.remove(i);
i-- ;
}
}
root.setAboutUsMenuTree(result);
return result;
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树