java递归生成树
1.获取数据
public list<treeclassifyrespvo> gettreeclassifylist(classifypagereqvo reqvo) {
list<classifydo> classifylist = classifymapper.selectlist(reqvo);
list<treeclassifyrespvo> childclassifyresp = classifyconvert.instance.convertlist01(classifylist);
return getclassifytree(childclassifyresp);
}2.生成树形结构
public list<treeclassifyrespvo> getclassifytree(list<treeclassifyrespvo> childclassifyresp) {
// 返回的树形数据
list<treeclassifyrespvo> tree = new arraylist<treeclassifyrespvo>();
// 第一次遍历
for (treeclassifyrespvo treeclassify : childclassifyresp) {
// 找到根节点,这里我的根节点的pid为0
if (treeclassify.getpid()==0) {
tree.add(findchild(treeclassify, childclassifyresp));
}
}
return tree;
}3.查询子节点
private treeclassifyrespvo findchild(treeclassifyrespvo treeclassify, list<treeclassifyrespvo> list) {
// 定义list用于存储子节点
list<treeclassifyrespvo> children = new arraylist<treeclassifyrespvo>();
for (treeclassifyrespvo node : list) {
// 找到根节点,这里我的根节点的pid为0
if (node.getpid().equals(treeclassify.getid())) {
// 调用递归
children.add(findchild(node, list));
}
}
treeclassify.setchildren(children);
return treeclassify;
}4.效果

总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论