Java遞迴獲取zTree標準結構資料優化
阿新 • • 發佈:2018-12-11
資料結構: var nodes = [ {name: "父節點1", children: [ {name: "子節點1"}, {name: "子節點2"} ]} ]; // 獲取標準JSON資料 public static List<Map<String, Object>> getStandardJSON() { // 根據不同框架獲取對應的List資料 List<Map<String, Object>> queryList = query.find(); List<Map<String, Object>> list = Lists.newArrayList(); for (Map<String, Object> map : queryList) { list = getChild(ROLE_ROOT_NAME, sysPopedomList); } return list; } // 遞迴獲取子節點資料 public static List<Map<String, Object>> getChild( String id, List<Map<String, Object>> modules) { // 子節點 List<Map<String, Object>> childList = Lists.newArrayList(); for (Map<String, Object> map : modules) { // 遍歷所有節點,將父節點id與傳過來的id比較 if (!ParamValidUtils.isEmpty(map.get("parent_id"))) { if (map.get("parent_id").toString().equals(id)) { childList.add(map); } } } // 把子節點的子節點再迴圈一遍 for (Map<String, Object> map : childList) { // 遞迴 map.put("children", getChild(map.get("id").toString(), modules)); } // 遞迴退出條件 if (childList.size() == 0) { return null; } return childList; }