1.创建节点bean实体
package com.springboot.util;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Data
public class TreeNode<T> implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String parentId;
private List<T> children = new ArrayList<>();
}
2.构建树形结构的函数
package com.springboot.util;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class TreeUtils {
public static <T extends TreeNode<T>> List<T> build(List<T> treeNodes, String parentId) {
List<T> treeList = new ArrayList<>();
for (T treeNode : treeNodes) {
if (parentId.equals(treeNode.getParentId())) {
treeList.add(findChildren(treeNodes, treeNode));
}
}
return treeList;
}
private static <T extends TreeNode<T>> T findChildren(List<T> treeNodes, T rootNode) {
for (T treeNode : treeNodes) {
if (rootNode.getId().equals(treeNode.getParentId())) {
rootNode.getChildren().add(findChildren(treeNodes, treeNode));
}
}
return rootNode;
}
}