生成樹形結構,有兩個子節點
阿新 • • 發佈:2018-12-09
先理解這幅圖 簡單說[]中間的List,{}中間的是Map。[{},{}]就是List<
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();
最後其實我還是不怎麼會寫這種樹形結構,如果有問題,可以留言給我。