java的递归方法记录:

  1. private List<Map<String, Object>> generateOrgMapToTree(List<Map<String, Object>> orgMaps, Integer pid) {
  2. if (null == orgMaps || orgMaps.size() == 0) {
  3. List<StatusResponseCodeEntity> list = statusResponseCodeRepository.findAll();
  4. String json_list = JSONObject.toJSONString(list);
  5. orgMaps = (List<Map<String, Object>>) JSONObject.parse(json_list);
  6. }
  7. List<Map<String, Object>> orgList = new ArrayList<>();
  8. if (orgMaps != null && orgMaps.size() > 0) {
  9. for (Map<String, Object> item : orgMaps) {
  10. //比较传入pid与当前对象pid是否相等
  11. if (pid.equals(item.get("pid"))) {
  12. //将当前对象id做为pid递归调用当前方法,获取下级结果
  13. List<Map<String, Object>> children = generateOrgMapToTree(orgMaps, Integer.valueOf(item.get("id").toString()));
  14. //将子结果集存入当前对象的children字段中
  15. item.put("children", children);
  16. //添加当前对象到主结果集中
  17. orgList.add(item);
  18. }
  19. }
  20. }
  21. return orgList;
  22. }

调用时操作:

  1. public String ResponseCode() {
  2. List<Map<String, Object>> list = generateOrgMapToTree(new ArrayList<>(), 0);
  3. String html = "";
  4. if (list.size() == 0) {
  5. html += "暂无信息";
  6. return html;
  7. }
  8. for (Map<String, Object> item : list) {
  9. List<Map<String, Object>> list_child = (List<Map<String,Object>>) item.get("children");
  10. html += "<br/>";
  11. html += "<h3>"+ item.get("message") +"</h3>";
  12. if (list_child.size() == 0) {
  13. html += "暂无信息";
  14. continue;
  15. }
  16. //输出返回信息
  17. for (Map<String, Object> child : list_child) {
  18. html += child.get("message");
  19. }
  20. }
  21.  
  22. return html;
  23. }

Java 查询数据后进行递归操作的更多相关文章

  1. nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效

    最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...

  2. java分段加载数据,循环和递归两种方式

    package org.jimmy.autosearch2019.test; import java.util.ArrayList; public class Test20190328 { priva ...

  3. SQL查询数据后在连成字符串方法

    CREATE TABLE tb ( user_id INT, type_id TINYINT ); INSERT INTO tb (user_id, type_id) VALUES (1,11); I ...

  4. 泛型的运用(用于查询数据后DataTable转实体类)

    2019.8.14 更新 补全了DataTable转泛型集合的方法: /// <summary> /// DataTable转实体类集合 /// </summary> /// ...

  5. 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案

    1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...

  6. JAVA对数据库进行操作,实现数据库中数据的插入,查询,更改,删除操作

    (—)通过mysql workbench 创建一个数据库,在这里命名为company,然后建一个tb_employee表 (二)以下是java代码对表tb_employee的操作 1 创建一个Empl ...

  7. Java 7 中 NIO.2 的使用——文件递归操作

    众所周知,递归编程是一项有争议的技术,因为它需要大量的内存,但是它能简化一些编程任务.基本上,一个递归操作都是程序调用自己传递参数修改的值或者参数传递到当前的程序循环中.递归编程通常用来计算阶乘斐波那 ...

  8. 【JAVA - SSM】之MyBatis插入数据后获取自增主键

    很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作.针对这个问题,有两种解决方案: (1)先插入,后查询.我们可以先插入一条数据,然后根据插入的数据的各个字段 ...

  9. GeoMesa Java API-写入与查询数据

    GeoMesa Java API-写入与查询数据 写入数据 DataStore SimpleFeatureType SimpleFeature 写入 查询数据 几个常用查询条件 设置最大返回条目: 设 ...

随机推荐

  1. 蓝盾第三代AI防火墙分析

    蓝盾第三代AI防火墙是国内首个“AI-Enabled”的防火墙.有别于市场上第一代特征识别.第二代应用识别防火墙.传统安全网关,需要依赖于签名和特征库技术对威胁进行检查,效率较低且存在大量误报漏报,特 ...

  2. elasticsearch 2.2+ index.codec: best_compression启用压缩

    官方说法,来自https://www.elastic.co/guide/en/elasticsearch/reference/2.2/index-modules.html#_static_index_ ...

  3. Spring Struts2 整合

    Spring整合Struts2 整合什么?——用IoC容器管理Struts2的Action如何整合?第一步:配置Struts21.加入Struts2的jar包.2.配置web.xml文件.3.加入St ...

  4. 第七次scrum meeting记录

    文章负责:张华杰 日期:2017年10月31日 会议地点:主楼主南201 各组员工作情况 团队成员 昨日完成任务 明日要完成任务 赵晓宇 课程列表页面搭建 issue20 课程列表页面搭建(part ...

  5. Linux命令2018-03-01更新

    前言:Linux主要应用于服务器端,嵌入式开发和个人pc桌面端 本人wechat:YWNlODAyMzU5MTEzMTQ=. *** GPL GPL是一个开源许可协议,由自由软件基金会创建的.GPL许 ...

  6. java-正则表达式判断手机号

    要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经开放了多少个号码段,国家号码段分配如下: 移动:134.135.136.137.138.139 ...

  7. PenMount Touch显示鼠标指针驱动安装

    /******************************************************************************* * PenMount Touch显示鼠 ...

  8. OpenCV - 图片二值化,计算白色像素点的个数

    直接上代码吧: import cv2 import numpy as np from PIL import Image area = def getWhitePixel(img): global ar ...

  9. vim编辑器安装命令使用命令和设置的使用总结

    vim编辑器的安装 vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.本文讲解主要是在Cento ...

  10. LeetCode Optimal Division

    原题链接在这里:https://leetcode.com/problems/optimal-division/description/ 题目: Given a list of positive int ...