龙空技术网

java树结构构造

Admin123 166

前言:

当前各位老铁们对“java 树形结构”大体比较关怀,小伙伴们都想要剖析一些“java 树形结构”的相关内容。那么小编也在网摘上收集了一些对于“java 树形结构””的相关知识,希望你们能喜欢,咱们一起来了解一下吧!

首先定义树结构

@Data

public class Tree {

/**

* 当前节点id

*/

private String id;

/**

* 父节点id

*/

private String parentId;

/**

* 名称

*/

private String name;

private List<Tree> childsList = new ArrayList<Tree>();

}

构造树的工具类

public class TreeUtil {

public List<Tree> getTreeData(List<Tree> list) {

List<Tree> returnList = new ArrayList<Tree>();

for (Iterator<Tree> iterator = list.iterator(); iterator.hasNext();) {

Tree res = iterator.next();

//判断是否为第一个节点:parentId为空

if (StringUtil.isEmptyString(res.getParentId())) {

recursionFn(list, res);

returnList.add(res);

}

}

return returnList;

}

/**

* 递归寻找子节点

* @Title: recursionFn

* @Description: 递归寻找子节点

* @param beans 所有节点

* @param current 当前节点

*/

private void recursionFn(List<Tree> beans, Tree current) {

List<Tree> childsList = getChildList(beans, current);

current.setChildsList(childsList);

for (Tree nextChild : childsList) {

recursionFn(beans, nextChild);

}

}

/**

* 获得指定节点下的所有子节点

* @Title: getChildList

* @Description: 获得指定节点下的所有子节点

* @param beans 所有节点集合

* @param current 当前节点

* @return List<Tree>

*/

private List<Tree> getChildList(List<Tree> beans, Tree current) {

List<Tree> childsList = new ArrayList<Tree>();

Iterator<Tree> it = beans.iterator();

while (it.hasNext()) {

Tree child = it.next();

if (current.getId().equals(child.getParentId())) {

childsList.add(child);

}

}

return childsList;

}

}

标签: #java 树形结构