List<DySettlementInput> collect = readList.stream().map(DySettlementRowInputModel::getInputModel).collect(Collectors.toList());什么意思这个
时间: 2024-03-19 17:41:20 浏览: 23
这段代码是将一个包含DySettlementRowInputModel对象的List转换为包含DySettlementInput对象的List。具体来说,它使用Java 8中的Stream API的map()方法将每个DySettlementRowInputModel对象转换为它的输入模型,然后使用collect()方法将这些输入模型收集到一个新的List中。这个新的List中的元素类型是DySettlementInput。简而言之,这段代码的作用就是将一个List中的对象转换为另一种类型的对象,并将它们收集到一个新的List中。
相关问题
List<DySettlementInput> collect = readList.stream().map(DySettlementRowInputModel::getInputModel).collect(Collectors.toList());
这行代码使用了 Java 8 中的 Stream API,实现了将一个 List 中的元素通过转换函数 `DySettlementRowInputModel::getInputModel` 映射成另一个类型 `DySettlementInput`,然后将映射后的元素收集到一个新的 List 中。
具体来说,假设有一个包含 `DySettlementRowInputModel` 对象的 List `readList`,其中 `DySettlementRowInputModel` 包含一个 `DySettlementInput` 类型的属性 `inputModel`,我们可以通过以下方式将 `readList` 中的所有 `inputModel` 提取出来,组成一个新的 List:
```
List<DySettlementInput> collect = readList.stream() // 将 List 转换成 Stream
.map(DySettlementRowInputModel::getInputModel) // 将 DySettlementRowInputModel 转换成 DySettlementInput
.collect(Collectors.toList()); // 将映射后的元素收集到一个新的 List 中
```
这个代码片段中的 `Collectors.toList()` 方法返回的是一个 `Collector` 对象,它会将 Stream 中的元素收集到一个新的 List 实例中,并返回该 List。
最终,`collect` 变量中将包含所有 `readList` 中的 `DySettlementInput` 元素。
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()));
```
阅读全文