递归
import entity.SysDept;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Test01 {
public static void main(String[] args) {
List<String> ids = new ArrayList<>();
SysDept dept = new SysDept(1L, 0L, "最上级", "");
SysDept twoLevelOne = new SysDept(2L, 1L, "第二级1", "");
SysDept twoLevelTwo = new SysDept(3L, 1L, "第二级2", "");
SysDept threeLevelOne = new SysDept(4L, 2L, "第三级1,上一级:第二级1", "");
List<SysDept> list = new ArrayList<SysDept>();
list.add(dept);
list.add(twoLevelOne);
list.add(twoLevelTwo);
list.add(threeLevelOne);
Long myDept = 1L;
ids.add(String.valueOf(myDept));
list.stream().filter(s -> s.getDeptId().equals(myDept))
.peek(s -> s.setChildren(getChildren(s, list, ids))).collect(Collectors.toList());
System.out.println(ids.toString());
}
public static List<SysDept> getChildren(SysDept sysDept, List<SysDept> list, List<String> ids) {
return list.stream().filter(s ->
sysDept.getDeptId().equals(s.getParentId())
).peek(item -> ids.add(String.valueOf(item.getDeptId()))).peek(s -> s.setChildren(getChildren(s, list, ids))).collect(Collectors.toList());
}
}