思路:使用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());
这篇博客介绍了如何利用Java Stream API对List<StudentResponse>集合进行过滤和分组,根据父级编码将学生响应对象进行归类。通过创建一个Map,以父级编码为键,对应的子菜单列表为值,然后遍历原始列表,将子菜单添加到对应父级编码的对象中。最后,筛选出父级编码为空的元素作为顶级菜单,完成整个数据结构的构建。
273

被折叠的 条评论
为什么被折叠?



