日期:2014-05-17  浏览次数:20929 次

java代码实现树形结构
比如:福建省|省公司本部|福州公司

 福建省|省公司本部|厦门公司

 浙江省|省公司本部|杭州公司
 如何java代码实现变成

id name pid

 1 福建省 0

 2 省公司本部 1

 3 福州公司 2

 4 厦门公司 2

 5 浙江省 0

 6 省公司本部 5

 7 杭州公司 6
 各位大神能否帮小弟解答下。。。不胜感激。。。
java

------解决方案--------------------

这个以前写的,可以参考一下
需要json-lib-2.4-jdk15.jar
getGroupTree()返回JSONArray ,JSONArray toString之后可以直接在页面上显示树形结构
前台用easyui的tree
public JSONArray getGroupTree() {
List<Map<String, Object>> treeList = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
Group group = getGroupByParentId(0);
if (group == null) {
return null;
}
map = groupToMap(group);
tree(map);
treeList.add(map);
JSONArray jsonArray = JSONArray.fromObject(treeList);
return jsonArray;
}

public static Map<String, Object> groupToMap(Group group){
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", group.getId());
map.put("text", group.getName());
return map;
}

public Map<String, Object> tree(Map<String, Object> map) {
int id = Integer.parseInt(map.get("id").toString());
List<Group> groups = getGroupsByParentID(id);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < groups.size(); ++i) {
Group group = groups.get(i);
Map<String, Object> m = groupToMap(group);
if (group.getIsleaf() == 0) {
tree(m);
}
list.add(m);
}
map.put("children", list);
return map;
}