1、两层for循环
public static List<NodeVO> streamToTree(List<NodeVO> treeList, String parentId) {
List<NodeVO> result = new ArrayList<>();
for(int i = 0; i < treeList.length; i++){
if(treeList[j].getPid() == parentId){
result.add(treeList[i]);
}
List<NodeVO> childList = new ArrayList<>();
for(int j = 0; j < treeList.length; j++){
if( treeList[j].getPid() == treeList[i].getId()){
childList.add(treeList[j]);
}
}
treeList[i].setChildren(childList);
}
return result;
}
2、stream流
public static List<NodeVO> streamToTree(List<NodeVO> treeList, String parentId) {
List<NodeVO> list = treeList.stream()
// 过滤父节点
.filter(parent -> parent.getPid().equals(parentId))
// 把父节点children递归赋值成为子节点
.map(child -> {
child.setChildren(streamToTree(treeList,child.getId()));
return child;
}).collect(Collectors.toList());
return list;
}