1. 程式人生 > >Java遞迴獲取zTree標準結構資料優化

Java遞迴獲取zTree標準結構資料優化

資料結構:
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;
}