if (!Util.IsNullOrEmpty(groups)) { for (GroupV2 group : groups) { List<CourseDTO> courses = group.getCourses(); if (!Util.IsNullOrEmpty(courses)) { Set<Integer> coursesIds = courses.stream().map(CourseDTO::getId).collect(Collectors.toSet()); if (coursesIds.contains(courseId)) { resultGroups.add(group); } } } },这一段代码如任何优化
时间: 2024-01-18 10:02:41 浏览: 60
List<Bean>转换为List<Map>
这段代码可以进行一些优化,例如:
1. 使用Java 8的stream API进行链式调用,而不是使用传统的for循环。
2. 避免在循环中反复调用getCourses()方法,可以先将groups集合中的所有courses提取出来,然后再进行遍历和筛选。
3. 将List转换为Set时,可以使用更高效的构造函数HashSet(Collection c)。
优化后的代码如下所示:
```
resultGroups = groups.stream()
.flatMap(group -> group.getCourses().stream())
.filter(course -> course.getId() == courseId)
.map(CourseDTO::getGroup)
.distinct()
.collect(Collectors.toList());
```
其中,flatMap()方法将所有的courses合并成一个Stream,filter()方法筛选出符合条件的course,map()方法将符合条件的course转换为对应的group,distinct()方法去重,最终使用collect()方法将结果收集到List中。
阅读全文