前端用的vant,以vant结构为基础,可自行修改
public class TreeVo {
private Integer pid;
private Integer id;
private String text;
private List<TreeVo> children;
//get set方法省略了
}
public class Tree {
private Integer rootId = 0; //根节点配置
private List<TreeVo> treeVoList = new ArrayList<TreeVo>();
public Tree(List<TreeVo> treeVoList) {
this.treeVoList = treeVoList;
}
//建立树形结构
public List<TreeVo> builTree(){
List<TreeVo> treeVoList = new ArrayList<TreeVo>();
for(TreeVo treeVo : getRootNode()) {
treeVo = buildChildTree(treeVo);
treeVoList.add(treeVo);
}
return treeVoList;
}
//递归,建立子树形结构
private TreeVo buildChildTree(TreeVo treeVo){
List<TreeVo> childTree = new ArrayList<TreeVo>();
for(TreeVo nodeTreeVo : treeVoList) {
if(nodeTreeVo.getPid().equals(treeVo.getId())) {
childTree.add(buildChildTree(nodeTreeVo));
}
}
if(childTree.size() > 0){ //前端框架中,只要是[],它就有展开节点,所以做个判断去掉
treeVo.setChildren(childTree);
}
return treeVo;
}
//获取根节点
private List<TreeVo> getRootNode() {
List<TreeVo> rootTreeList =new ArrayList<TreeVo>();
for(TreeVo treeVo : treeVoList) {
if(treeVo.getPid() == rootId) {
rootTreeList.add(treeVo);
}
}
return rootTreeList;
}
}