Java 查询数据后进行递归操作
java的递归方法记录:
private List<Map<String, Object>> generateOrgMapToTree(List<Map<String, Object>> orgMaps, Integer pid) {
if (null == orgMaps || orgMaps.size() == 0) {
List<StatusResponseCodeEntity> list = statusResponseCodeRepository.findAll();
String json_list = JSONObject.toJSONString(list);
orgMaps = (List<Map<String, Object>>) JSONObject.parse(json_list);
}
List<Map<String, Object>> orgList = new ArrayList<>();
if (orgMaps != null && orgMaps.size() > 0) {
for (Map<String, Object> item : orgMaps) {
//比较传入pid与当前对象pid是否相等
if (pid.equals(item.get("pid"))) {
//将当前对象id做为pid递归调用当前方法,获取下级结果
List<Map<String, Object>> children = generateOrgMapToTree(orgMaps, Integer.valueOf(item.get("id").toString()));
//将子结果集存入当前对象的children字段中
item.put("children", children);
//添加当前对象到主结果集中
orgList.add(item);
}
}
}
return orgList;
}
调用时操作:
public String ResponseCode() {
List<Map<String, Object>> list = generateOrgMapToTree(new ArrayList<>(), 0);
String html = "";
if (list.size() == 0) {
html += "暂无信息";
return html;
}
for (Map<String, Object> item : list) {
List<Map<String, Object>> list_child = (List<Map<String,Object>>) item.get("children");
html += "<br/>";
html += "<h3>"+ item.get("message") +"</h3>";
if (list_child.size() == 0) {
html += "暂无信息";
continue;
}
//输出返回信息
for (Map<String, Object> child : list_child) {
html += child.get("message");
}
} return html;
}
Java 查询数据后进行递归操作的更多相关文章
- nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效
最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...
- java分段加载数据,循环和递归两种方式
package org.jimmy.autosearch2019.test; import java.util.ArrayList; public class Test20190328 { priva ...
- SQL查询数据后在连成字符串方法
CREATE TABLE tb ( user_id INT, type_id TINYINT ); INSERT INTO tb (user_id, type_id) VALUES (1,11); I ...
- 泛型的运用(用于查询数据后DataTable转实体类)
2019.8.14 更新 补全了DataTable转泛型集合的方法: /// <summary> /// DataTable转实体类集合 /// </summary> /// ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- JAVA对数据库进行操作,实现数据库中数据的插入,查询,更改,删除操作
(—)通过mysql workbench 创建一个数据库,在这里命名为company,然后建一个tb_employee表 (二)以下是java代码对表tb_employee的操作 1 创建一个Empl ...
- Java 7 中 NIO.2 的使用——文件递归操作
众所周知,递归编程是一项有争议的技术,因为它需要大量的内存,但是它能简化一些编程任务.基本上,一个递归操作都是程序调用自己传递参数修改的值或者参数传递到当前的程序循环中.递归编程通常用来计算阶乘斐波那 ...
- 【JAVA - SSM】之MyBatis插入数据后获取自增主键
很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作.针对这个问题,有两种解决方案: (1)先插入,后查询.我们可以先插入一条数据,然后根据插入的数据的各个字段 ...
- GeoMesa Java API-写入与查询数据
GeoMesa Java API-写入与查询数据 写入数据 DataStore SimpleFeatureType SimpleFeature 写入 查询数据 几个常用查询条件 设置最大返回条目: 设 ...
随机推荐
- 【转】安装OS X虚拟机错误vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123
新建一个虚拟机, 选择客户机操作系统为Apple MacOS X 10.10, 其余参数可以默认. 注意建好之后不要急着打开客户机, 因为直接打开你会发现新建的客户机将会无法启动. 仔细阅读Mac O ...
- Maven项目中java类报错-Cannot resolve symbol
电脑蓝屏了,强制重启之后再打开IDEA里面的项目,所有Java类文件都在报Cannot resolve symbo错误,可以确定所有依赖的包都有引用且jar包没有冲突. 经查询找到这个解决方法: 在I ...
- LeetCode OJ :Move Zeroes (移动0)
Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...
- 2017.11.23 display fun --STM8
unsigned char disp_mode;unsigned char disp_last_mode;unsigned char disp_sub_mode;unsigned char disp_ ...
- switch遇到0的问题
你是否经常有switch来代替if else?是否因为使用了switch,提高代码的执行效率而庆幸?好吧,你和我一样,但也许你没有遇到下面的问题. 这个小程序,会输出什么呢?会是'00'么? 结果 ...
- java学习网站推荐
推荐大家一个好的java学习网站: http://www.programcreek.com/java-api-examples/index.php 可以找到api对应的开源项目使用的代码.
- android textview xml 属性设置
android:ems 设置TextView的宽度为N个字符的宽度. android:maxems 设置TextView的宽度为最长为N个字符的宽度.与ems同时使用时覆盖ems选项. andr ...
- (三十六)类数组对象arguments
类数组对象:arguments 在函数调用时,我们总能见到arguments这个对象,它具体是用来干什么的呢?感觉逼格非常高呢 函数在使用时,我们总会位函数传入各种参数,arguments会将参数储存 ...
- HihoCoder 1185 : 连通性·三(强连通缩点)
连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出去,就拜托小Hi ...
- Java程序员必须掌握的知识
1.语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项, ...