起步
实现一个树形结构,新建一个Tree类,主要包含节点id,父节点 默认0为根节点parentId,节点的名称name,是否存在子节点hasChild
public class Tree{
/**
* 节点id
*/
private String id;
/**
* 父节点 默认0为根节点
*/
private String parentId;
/**
* 节点名称
*/
private String name;
/**
* 是否有子节点
*/
private boolean hasChild;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isHasChild() {
return hasChild;
}
public void setHasChild(boolean hasChild) {
this.hasChild = hasChild;
}
public Tree(String id, String parentId, String name) {
this.id = id;
this.parentId = parentId;
this.name = name;
}
}
新建一个构造树形结构的工具类
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class TreeUtil {
public static Map<String, Object> mapArray = new LinkedHashMap<String, Object>();
public List<Tree> tree;
public List<Object> list = new ArrayList<Object>();
public List<Object> treeMenu(List<Tree> tree) {
this.tree = tree;
for (Tree treeNode : tree) {
Map<String, Object> mapArr = new LinkedHashMap<String, Object>();
if (treeNode.getParentId().equals("0")) {
setTreeMap(mapArr, treeNode);
list.add(mapArr);
}
}
return list;
}
public List<?> child(String id) {
List<Object> lists = new ArrayList<Object>();
for (Tree a : tree) {
Map<String, Object> childArray = new LinkedHashMap<String, Object>();
if (a.getParentId().equals(id)) {
setTreeMap(childArray, a);
lists.add(childArray);
}
}
return lists;
}
private void setTreeMap(Map<String, Object> mapArr, Tree treeNode) {
mapArr.put("id", treeNode.getId());
mapArr.put("name", treeNode.getName());
mapArr.put("parentId", treeNode.getParentId());
List<?> children = child(treeNode.getId());
if (children.size() > 0) {
mapArr.put("hasChild", true);
} else {
mapArr.put("hasChildren", false);
}
mapArr.put("children", child(treeNode.getId()));
}
}