java-树形json对象

来源:互联网 发布:php是做前端还是后端 编辑:程序博客网 时间:2024/06/05 17:52

原理:

1.定义json格式javabean: id,name,child...

        2.  查询数据库里数据: id,pid,name...

        3.  判断pid==0 或 == null 将root(可以多个)放入List <定义实体>rootList 中

        4. 将pid相同的归到一个map中(剃掉root的):map.put(pid,List)

        5. 循环rootList,遍历pid与当前id一致的放入chilid中,再遍历chilid

public List<MenueInfo> getMenuTree(){

// 查询Menue

List<Menue> menueList = MenueService.queryAllMenue();

//定义rootList

        List<MenueInfo> rootMenueList = new ArrayList();

//定义map

Map<Long, List<MenueInfo>> childMenueMap = new HashMap();

for (int i = 0; i < menueList.size(); i++){

if (menue.getParentId() == null || menue.getParentId().equals("")) {
rootMenueList.add(menueinfo);
} else {


if (childMenueMap.get(menue.getParentId()) == null) {
List<MenueInfo> childList = new ArrayList();
childList.add(menueinfo);
childMenueMap.put(menue.getParentId(), childList);
} else {
List<MenueInfo> childList = childMenueMap.get(menue
.getParentId());
childList.add(menueinfo);
childMenueMap.put(menue.getParentId(), childList);
}
}

}

for (int i = 0; i < rootMenueList.size(); i++) {
makeChildren(rootMenueList.get(i), childMenueMap);
}


return rootMenueList;



public void makeChildren(MenueInfo parentMenueInfo,
Map<Long, List<MenueInfo>> childMenueMap) {
Long parentId = parentMenueInfo.getMenueId();


Iterator iter = childMenueMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<Long, List<MenueInfo>> entry = (Map.Entry) iter.next();
Long pId = entry.getKey();
List<MenueInfo> childMenueList = entry.getValue();
if (parentId == pId) {
parentMenueInfo.setChildMenue(childMenueList);
childMenueMap.remove(pId);
for (int i = 0; i < childMenueList.size(); i++) {
makeChildren(childMenueList.get(i), childMenueMap);
}
break;
}


}
}

0 0
原创粉丝点击