本文件作为自用存储
1.树形结构对象
// An highlighted block
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Data
public class TreeBaseVo implements Serializable {
//自身id
private Long id;
//自身parent_id
private Long parentId;
//名称
private String name;
//等级
private String level;
//子集
private List<TreeBaseVo> children = new ArrayList<>();
}
2.工具类-selectList转多级树结构
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TreeListUtils {
public static List<TreeBaseVo> buildTreeList(List<TreeBaseVo> ydata){
List<TreeBaseVo> ret = new ArrayList<>();
//获取第一级
Iterator<TreeBaseVo> iterator = ydata.iterator();
while (iterator.hasNext()){
//迭代当前元素
TreeBaseVo next = iterator.next();
if ("1".equals(next.getLevel())){
//塞入集合
ret.add(next);
//移出集合
iterator.remove();
}
}
//如果含有1级节点 且 源集合仍有数据
if (!CollectionUtils.isEmpty(ret) && !CollectionUtils.isEmpty(ydata)){
//递归查询
dg(ret,ydata);
}
//返回最终结果
return ret;
}
private static void dg(List<TreeBaseVo> ret,List<TreeBaseVo> ydata) {
//遍历当前等级节点
for (TreeBaseVo treeBaseVo : ret) {
//临时子集
List<TreeBaseVo> tempChildren = new ArrayList<>();
//staticYdata 寻找当前节点子集
Iterator<TreeBaseVo> iterator = ydata.iterator();
while (iterator.hasNext()){
//迭代当前元素
TreeBaseVo next = iterator.next();
if (treeBaseVo.getId().equals(next.getParentId())){
//塞入子集
tempChildren.add(next);
//移出集合
iterator.remove();
}
}
//如果当前节点含有子集 且 源集合仍有数据
if (!CollectionUtils.isEmpty(tempChildren) && !CollectionUtils.isEmpty(ydata)){
//递归子集
dg(tempChildren,ydata);
}
//塞入子集
treeBaseVo.getChildren().addAll(tempChildren);
}
}
}