package demo01;
import java.util.List;
/**
* 树节点
*
* @author
*
*/
public class TreeNode {
private String id;
private String pid;
private String name;
private List<TreeNode> children;
public TreeNode(String id, String name, String pid) {
this.id = id;
this.name = name;
this.pid = pid;
}
public TreeNode(String id, String name, TreeNode parent) {
this.id = id;
this.name = name;
this.pid = parent.getId();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<TreeNode> getChildren() {
return children;
}
public void setChildren(List<TreeNode> children) {
this.children = children;
}
@Override
public String toString() {
return "TreeNode [id=" + id + ", pid=" + pid + ", name=" + name + ", children=" + children + "]";
}
}
package demo01;
import java.util.ArrayList;
import java.util.List;
public class TreeBuilder {
/**
* 构造树形结构(双重for循环)
* @param treeNodes
* @return
*/
public static List<TreeNode> build(List<TreeNode> treeNodes) {
List<TreeNode> treeNodeList = new ArrayList<TreeNode>();
for (TreeNode treeNode : treeNodes) {
if ("NULL".equals(treeNode.getPid())) {
treeNodeList.add(treeNode);
}
for (TreeNode it : treeNodes) {
if (it.getPid() == treeNode.getId()) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<TreeNode>());
}
treeNode.getChildren().add(it);
}
}
}
return treeNodeList;
}
/**
* 构造树形结构(递归)
* @param treeNodes
* @return
*/
public static List<TreeNode> build2(List<TreeNode> treeNodes) {
List<TreeNode> trees = new ArrayList<TreeNode>();
for (TreeNode treeNode : treeNodes) {
if ("NULL".equals(treeNode.getPid())) {
trees.add(findChildren(treeNode, treeNodes));
}
}
return trees;
}
public static TreeNode findChildren(TreeNode treeNode, List<TreeNode> treeNodes) {
for (TreeNode it : treeNodes) {
if (treeNode.getId().equals(it.getPid())) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<TreeNode>());
}
treeNode.getChildren().add(findChildren(it, treeNodes));
}
}
return treeNode;
}
}
package demo01;
import java.util.ArrayList;
import java.util.List;
public class Start {
public static void main(String[] args) {
TreeNode treeNode_1 = new TreeNode("1","辽宁","NULL");
TreeNode treeNode_1_1 = new TreeNode("2","沈阳",treeNode_1);
TreeNode treeNode_1_2 = new TreeNode("3","大连",treeNode_1);
List<TreeNode> list = new ArrayList<TreeNode>();
list.add(treeNode_1);
list.add(treeNode_1_1);
list.add(treeNode_1_2);
List<TreeNode> trees_1 = TreeBuilder.build(list);
System.out.println(trees_1);
// List<TreeNode> trees_2 = TreeBuilder.build2(list);
// System.out.println(trees_2);
}
}
输出结果:
[TreeNode [id=1, pid=NULL, name=辽宁, children=[TreeNode [id=2, pid=1, name=沈阳, children=null], TreeNode [id=3, pid=1, name=大连, children=null]]]]