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