简单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语言里面需要实现一个二叉树,我们需要 ...
随机推荐
- java.util.Arrays
package com.etc.Arrays; import java.util.Arrays; public class TestArraysClass { public static void m ...
- MyBatis动态条件、一对多、整合spring(二)
输入映射和输出映射 Mapper.xml映射文件定义了操作数据库的sql,每一个sql是一个statement,映射文件是mybatis的核心. parameterType输入类型 1.传递简单类型 ...
- 上传预览图片的插件jquery-fileupload
上传预览图片的插件jquery-fileupload github地址:https://github.com/blueimp/jQuery-File-Upload 中文文档:http://www.jq ...
- jQuery学习笔记之DOM操作、事件绑定(2)
jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...
- poj 1564 Sum It Up 搜索
题意: 给出一个数T,再给出n个数.若n个数中有几个数(可以是一个)的和是T,就输出相加的式子.不过不能输出相同的式子. 分析: 运用的是回溯法.比较特殊的一点就是不能输出相同的式子.这个可以通过ma ...
- 三维重建面试13X:一些算法试题-今日头条AI-Lab
被人牵着鼻子走,到了地方还墨明棋妙地吃一顿砖头.今日头条AI-Lab,其实我一直发现,最擅长的还是点云图像处理,且只是点云处理. 一.C++题目 New 与Malloc的区别: ...
- 06--谈谈:C++类的“包含”机制
谈谈:C++类的“包含”机制 本人在学习Qt的时候发现了一个非常有趣的现象.有很多函数的调用方法都写成了如下的形式: object.func().func2(); 这令小弟着实不懂.在上面这段代码 ...
- BZOJ 4698: Sdoi2008 Sandy的卡片 后缀数组 + RMQ + 查分
题目描述 Sandy和Sue的热衷于收集干脆面中的卡片. 然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型. 每一张卡片都由一些数字进行标记,第i张卡片的 ...
- HTML 1.1页面js修改文字颜色
昨天的报告页面,想要实现根据不同文字内容改变字体颜色,效果图: 调试了半天出不来效果,最后请教了前端,上代码: <!DOCTYPE html> <html lang="en ...
- python tkinter模块小工具界面
代码 #-*-coding:utf-8-*- import os from tkinter import * root=Tk() root.title('小工具') #清空文本框内容 def clea ...