List<Long> courseIds = records.stream() .map(LearningLesson::getCourseId) .distinct() .collect(Collectors.toList());
时间: 2024-02-23 22:57:09 浏览: 71
这段代码中,首先从上一段代码中查询到的LearningLesson对象列表records中获取每个对象的courseId属性,然后使用stream()方法将其转换为一个流(Stream)。接着使用map()方法将每个LearningLesson对象的courseId属性映射为一个Long类型的值。使用distinct()方法去除重复的courseId,最后使用collect()方法将流中的元素收集到一个List<Long>类型的集合中,并将其赋值给courseIds变量。换句话说,这段代码的作用是从查询到的LearningLesson对象列表中提取所有不重复的courseId,并将其以List<Long>类型的形式返回。
相关问题
List<String> deviceIdList = trDevportList.stream().map(ReportResultCommon::getDevId).collect(Collectors.toList()); 加上去重
可以使用Java 8的Stream API中的distinct()方法来去重。只需在map()方法之后调用distinct()方法即可。
例如:
```
List<String> deviceIdList = trDevportList.stream()
.map(ReportResultCommon::getDevId)
.distinct()
.collect(Collectors.toList());
```
这将返回一个去重后的设备ID列表。
List<String> list= new ArrayList<>(); List<String> leaderId = departs.stream().filter(depart -> StringUtils.isNotBlank(depart.getFdLeaderId())).map(Depart::getFdLeaderId).collect(Collectors.toList()); List<String> etxLeaderId = departs.stream().filter(depart -> StringUtils.isNotBlank(depart.getFdLeaderExtId())).map(Depart::getFdLeaderExtId).collect(Collectors.toList()); list = account.stream().filter(departAccountVo -> StringUtils.isNotBlank(departAccountVo.getFdAccountId())).map(DepartAccountVo::getFdAccountId).collect(Collectors.toList()); list.addAll(leaderId); list.addAll(etxLeaderId); list = list.stream().distinct().collect(Collectors.toList()); 优化这段代码
可以使用链式调用的方式,避免重复的流操作,同时也可以在收集器中使用toSet()方法来去重。优化后的代码如下:
```
List<String> list = departs.stream()
.flatMap(depart -> Stream.of(depart.getFdLeaderId(), depart.getFdLeaderExtId()))
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
list.addAll(account.stream()
.map(DepartAccountVo::getFdAccountId)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toList()));
```
阅读全文