public class TreeUtils {
/**
* @param list 全部节点列表
* @param rootParentId 根节点ID
* @param <T> 节点数据model
* @return 树结构数据
*/
public static <T extends TreeNodeDTO> List<T> listToTree(List<T> list, Long rootParentId) {
return list.stream()
.filter(treeNodeDTO -> treeNodeDTO.getParentId().equals(rootParentId))
.peek(treeNodeDTO -> treeNodeDTO.setChildrenList(listToTree(list, treeNodeDTO.getId())))
.collect(Collectors.toList());
}
public static class TreeNodeDTO {
/**
* ID
*/
private Long id;
/**
* 父级ID
*/
private Long parentId;
/**
* 子节点列表
*/
private List<? extends TreeNodeDTO> childrenList;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public List<? extends TreeNodeDTO> getChildrenList() {
return childrenList;
}
public void setChildrenList(List<? extends TreeNodeDTO> childrenList) {
this.childrenList = childrenList;
}
}
}
28.树形结构工具类
于 2022-05-09 10:11:47 首次发布