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.效果
总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论