思路:使用stream流对list集合进行分组,得到一个key为父级编码,value为list的一个map,然后遍历list,用编码和map中的key作比较,如果相同则加入到自己的子菜单下。

最后留下父级编码为空的数据就完成了遍历。
 

List<StudentResponse> dataList;
Map<String, List<StudentResponse>> collect = dataList.stream()
    .filter(Objects::nonNull)
    .filter(o -> StringUtils.isNotBlank(o.getParentCode()))
    .collect(Collectors.groupingBy(StudentResponse::getParentCode));
for (StudentResponse data : dataList) {
    String code = data.getCode();
    List<StudentResponse> list = collect.get(code);
    data.setChildren(list);
}
dataList = dataList.stream()
    .filter(e -> StringUtils.isBlank(e.getParentCode()))
    .collect(Collectors.toList());

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐