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;
    }

 

posted @ 2018-03-29 14:36  博尔特希  阅读(7137)  评论(0编辑  收藏  举报