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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM