前言:
当前各位老铁们对“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 树形结构