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 写入 查询数据 几个常用查询条件 设置最大返回条目: 设 ...
随机推荐
- 最详细的虚拟机安装centos7教程
参考网站:https://jingyan.baidu.com/article/b7001fe1d1d8380e7382dd72.html 安装vmware10,vmware是收费的,作为学习,我介意还 ...
- Eclipse 3.7 极述优化
1.去除不用的jar Eclipse/plugins目录下去除下面的jar和目录 2012/02/17 03:09 14,169 org.eclipse.cvs_1.1.100.v2012020808 ...
- 014——VUE中v-if语法在网站注册中的实际应用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- oracle 常用的系统表查询
(转自:http://blog.csdn.net/marshalchen/article/details/6552103) select * from user_tab_cols where colu ...
- 【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-L】用来作弊的药水
链接:https://www.nowcoder.com/acm/contest/90/L来源:牛客网 输入x,a,y,b,(1<=x,a,y,b<=10^9)判断x^a是否等于y^b 前面 ...
- 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 ...
- 【python】numpy pandas 特性(随时更新)
[value map] 用df.replace(dict)可以解决.但是如果dict太大,会非常非常慢. [array相加的维度规律][广播] (2,3) 能和 (3,) 相加,不能和(2,)相加 ( ...
- HAWQ取代传统数仓实践(十四)——事实表技术之累积快照
一.累积快照简介 累积快照事实表用于定义业务过程开始.结束以及期间的可区分的里程碑事件.通常在此类事实表中针对过程中的关键步骤都包含日期外键,并包含每个步骤的度量,这些度量的产生一般都会滞后于数据行的 ...
- JS同源策略和跨域访问
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只 ...
- 典型的一次jQuery.validate.js 表单中的验证应用
var validateOption = { onkeyup:false, rules:{ password:{ required:true, remote:{ url:'index.php?app= ...