1. 程式人生 > >生成樹形結構,有兩個子節點

生成樹形結構,有兩個子節點

先理解這幅圖 這裡寫圖片描述 簡單說[]中間的List,{}中間的是Map。[{},{}]就是List<Map>。 先放圖 這裡寫圖片描述 這裡寫圖片描述

PrintWriter out;
            List<Permission> list = this.pService.queryHql();
            JSONObject obj =new JSONObject();
            obj.element("code", 0);
            obj.element("msg", "success");
            Map<String
, Object> mMap = new HashMap<String, Object>(); List<Map<String, Object>> treeList = new ArrayList<Map<String,Object>>(); for (int i = 0; i < list.size(); i++) { // 父節點 Permission permission = list.get(i); if
(permission.getPid() == null) { Map<String, Object> pMap=new HashMap<String, Object>(); pMap.put("name", permission.getName()); pMap.put("value", permission.getId()); // 判斷ID,自動勾選 if (HcHelper.StringIsNotempty(choose)) { //System.out.println(choose);
String[] split = choose.split(","); for (int g = 0; g < split.length; g++) { String id = split[g]; if (permission.getId() == Integer.parseInt(id)) { pMap.put("checked", "true"); } } } // 第一個子節點 List<Map<String, Object>> rList2 = new ArrayList<Map<String, Object>>(); for (int j = 0; j < list.size(); j++) { Permission permission2 = list.get(j); if (HcHelper.NumberIsNotempty(permission2.getPid())) { if (permission2.getPid().equals(permission.getId())) { Map<String, Object> p2Map = new HashMap<String, Object>(); p2Map.put("name", permission2.getName()); p2Map.put("value",permission2.getId()); // 判斷ID,自動勾選 if (HcHelper.StringIsNotempty(choose)) { //System.out.println(choose); String[] split = choose.split(","); for (int g = 0; g < split.length; g++) { String id = split[g]; if (permission2.getId() == Integer.parseInt(id)) { p2Map.put("checked", "true"); } } } //第二個子節點 List<Map<String, Object>> rList3 = new ArrayList<Map<String, Object>>(); for (int k = 0; k < list.size(); k++) { Permission permission3 = list.get(k); if (HcHelper.NumberIsNotempty(permission3.getPid())) { if (permission3.getPid().equals(permission2.getId())) { Map<String, Object> p3Map = new HashMap<String, Object>(); p3Map.put("name", permission3.getName()); p3Map.put("value",permission3.getId()); // 判斷ID,自動勾選 if (HcHelper.StringIsNotempty(choose)) { String[] split = choose.split(","); for (int g = 0; g < split.length; g++) { String id = split[g]; if (permission3.getId() == Integer.parseInt(id)) { p3Map.put("checked", "true"); } } } rList3.add(p3Map); p2Map.put("list", rList3); //System.out.println("第二子節點"+pMap2); } } } rList2.add(p2Map); pMap.put("list", rList2); //System.out.println("第1子節點"+pMap); } } } treeList.add(pMap); } } mMap.put("trees", treeList); obj.element("data",mMap); out = response.getWriter(); out.print(obj.toString()); out.close();

最後其實我還是不怎麼會寫這種樹形結構,如果有問題,可以留言給我。