package org.hepx.jgt.common.tree; import java.util.ArrayList; import java.util.List; /** * 树形结构构建类 * 注:树必须要符合TreeNode的数据结构:id,parentId,children * 输出:将一个无序List<TreeNode>能过此类的build方法返回一个List<TreeNode>的树形数据结构 * (相应的子节点children将被填充)。 * * @author hepx * @date 2016/1/12 */ public class TreeBuilder { /** * 将一个无序List<TreeNode>能过此类的build方法返回一个List<TreeNode>的树形数据结构 * (相应的子节点children将被填充)。 * @param nodeList * @return */ public static List<TreeNode> build(List<TreeNode> nodeList) { List<TreeNode> newNodeList = new ArrayList<TreeNode>(); for (TreeNode node1 : nodeList) { boolean mark = false; for (TreeNode node2 : nodeList) { if (node1.getParentId() != null && node1.getParentId().equals(node2.getId())) { mark = true; if (node2.getChildren() == null) { node2.setChildren(new ArrayList<TreeNode>()); } node2.getChildren().add(node1); break; } } if (!mark) { newNodeList.add(node1); } } return newNodeList; } }