import java.util.List;
public interface DataTree<T> {
public String getId();
public String getFjd();
public List<T> getChildList();
public void setChildrenList(List<T> childrenList);
}
import java.util.ArrayList;
import java.util.List;
/**
* @Description:获得树形结构
* @author: gfk
* @date: 2022/8/26
* @param null
* @return:
*/
public class TreeUtils {
public static <T extends DataTree<T>> List<T> getTreeList(String topId,List<T> list){
//写一个存放容器
List<T> result = new ArrayList<>();
//将根节点加入容器
//由于现在传入的是根节点的id,没办法确定根节点的数据,所以需要先遍历出来
//这是一个公用的方法,使用所以使用的是泛型
for (T t:list){
if (topId.equals(t.getFjd())){
result.add(t);
}
}
//已经确定了根节点,就可以从根节点遍历子节点
for (T t:result){
getChildList(t,list);
}
return result;
}
/**
* @Description:递归获取子节点
* @author: gfk
* @date: 2022/8/26
* @param t
* @param list
* @return: void
*/
private static <T extends DataTree<T>> void getChildList(T t, List<T> list) {
for (T tree:list){
if (t.getId().equals(tree.getFjd())){
if (t.getChildList().isEmpty()) {
t.setChildrenList(new ArrayList<>());
}
t.getChildList().add(tree);
getChildList(tree,list);
}
}
}
}