简单list转化为tree结构
1 @Override
public List<Module> getTree() {
List<Module> list = moduleMapper.queryList();
// List<Module> modules = makeTree(list);
return list;
} private List<Module> makeTree(List<Module> list) {
List<Module> parent = new ArrayList<Module>();
// get parentId = null;
for (Module e : list) {
if (e.getParent_Module() == null) {
e.setChildren(new ArrayList<Module>(0));
parent.add(e);
}
}
// 删除parentId = null;
list.removeAll(parent); makeChildren(parent, list); return parent;
} private void makeChildren(List<Module> parent, List<Module> children) {
if (children.isEmpty()) {
return;
} List<Module> tmp = new ArrayList<Module>();
for (Module c1 : parent) {
for (Module c2 : children) {
c2.setChildren(new ArrayList<Module>(0));
if (c1.getId().equals(c2.getParent_Module().getId())) {
c1.getChildren().add(c2);
tmp.add(c2);
}
}
} children.removeAll(tmp); makeChildren(tmp, children);
}
补充po类:
package com.zktx.platform.entity.tb; import java.util.ArrayList;
import java.util.List; public class Module {
private Integer id;
private String class_name;
private String description;
private String name;
private Integer priority;
private String sn;
private String url;
private Integer parent_id;
private Module parent_Module;
private List<Module> children = new ArrayList<Module>(); public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getClass_name() {
return class_name;
} public void setClass_name(String class_name) {
this.class_name = class_name;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getPriority() {
return priority;
} public void setPriority(Integer priority) {
this.priority = priority;
} public String getSn() {
return sn;
} public void setSn(String sn) {
this.sn = sn;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public Integer getParent_id() {
return parent_id;
} public void setParent_id(Integer parent_id) {
this.parent_id = parent_id;
} public Module getParent_Module() {
return parent_Module;
} public void setParent_Module(Module parent_Module) {
this.parent_Module = parent_Module;
} public List<Module> getChildren() {
return children;
} public void setChildren(List<Module> children) {
this.children = children;
} }
简单list转化为tree结构的更多相关文章
- 简单的if多分支结构练习:用户录入 1-10的数字 , 1-7没奖品 , 8,9,10分别获得 3 2 1 等奖
package com.summer.cn; import java.util.Scanner; /** * @author Summer *简单的if多分支结构练习 *用户录入 1-10的数字 , ...
- 简单的Verilog测试模板结构
这里记录一下曾经用到的简单的测试模板,如下所示: //timescale `timescale 1ns/1ns module tb_module(); //the Internal motivatio ...
- 把tree结构数据转换easyui的columns
很多时候我们的datagrid需要动态的列显示,那么这个时候我们后台一般提供最直观的数据格式tree结构.那么需要我们前端自己根据这个tree结构转换成easyui的datagrid的columns. ...
- B-tree & B+tree & B*Tree 结构浅析——转
转自http://www.cnblogs.com/coder2012/p/3330311.html http://blog.sina.com.cn/s/blog_6776884e0100ohvr.ht ...
- 查询list转化为tree的两种方式及排序
方式一,数据库查询tree; MyBatis collection 集合 MyBatis 是数据持久层框架,支持定制化 SQL.存储过程以及高级映射.尤其强大在于它的映射语句,比如高级映射中的 col ...
- (简单) POJ 3321 Apple Tree,树链剖分+树状数组。
Description There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow ...
- C++编程练习(3)----“实现简单的栈的顺序存储结构“
栈(stack)是限定仅在表尾进行插入和删除操作的线性表. 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 栈又称为后进先出(Last In First Out)的线性表,简 ...
- 第5章 简单的C程序设计——循环结构程序设计
5.1 为什么需要循环控制 前面介绍了程序中常用到的顺序结构和选择结构,但是只有这两种结构是不够的,还需要用到循环结构(或称重复结构).因为在程序所处理的问题中常常遇到需要重复处理的问题. 循环结构和 ...
- 二叉树的简单操作(Binary Tree)
树形结构应该是贯穿整个数据结构的一个比较重要的一种结构,它的重要性不言而喻! 讲到树!一般都是讨论二叉树,而关于二叉树的定义以及概念这里不做陈诉,可自行搜索. 在C语言里面需要实现一个二叉树,我们需要 ...
随机推荐
- B - Chat room
Problem description Vasya has recently learned to type and log on to the Internet. He immediately en ...
- C#开发微信公众号——网页开发之微信网页授权
首先咱们先看下公众号的文档里面的介绍 上述图片的文字描述就是讲述了网页授权有什么用,就是为了获取微信用户的基本信息:授权回调域名的规范,说到域名回调的事情就不得不提一下设置网页授权域名 最好将这三个域 ...
- os的进程调度算法(抄袭的)
package me.letterwish.test; import java.io.BufferedInputStream; import java.io.FileInputStream; impo ...
- 【SQL】INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND
INTERVAL YEAR TO MONTH: 作为年和月的时间间隔存储 INTERVAL DAY TO SECOND: 作为天.小时.分和秒的时间间隔存储(DAY,HOUR,MINUTE,SECON ...
- VHDL之std_logic_1164
This packages defines a standard for designers to use in describing the interconnection data types u ...
- Linux学习自动化脚本(一)
https://www.cnblogs.com/handsomecui/p/5869361.html https://blog.csdn.net/daigualu/article/details/76 ...
- ubuntu16.04安装KDE
由于对KDE界面情有独钟,升级到ubuntu之后,第一件事就是安装kde桌面 命令: add-apt-repository ppa:kubuntu-ppa/backports apt-get upda ...
- c# md5加密封装
/// <summary> /// md5加密字符串 /// </summary> /// <param name="str">需要加密的字符串 ...
- Linux文件压缩命令笔记
1.gzip/gunzip gzip/gunzip:主要是进行单个文件的压缩和解压缩的命令. 示例:gzip hello.txt #执行压缩hello.txt ls hello.txt.gz #查看文 ...
- 【剑指Offer】45、扑克牌顺子
题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到 ...