这行代码什么意思:List<String> dbIds = list.stream().map(TslRspeDet::getId).collect(Collectors.toList());
时间: 2024-05-30 11:16:50 浏览: 170
这行代码的意思是:使用Java 8中的Stream API,将一个类型为TslRspeDet的列表list中的每个元素映射为它的id属性,并将所有id组成的列表收集到一个新的List<String>对象dbIds中。换句话说,这行代码将列表list中每个元素的id属性提取出来,然后将它们放入一个新的列表dbIds中。
相关问题
List<String> landsForVillages = feignBasicController.getLandsForVillages(id); List<DevInfo> devByBaseId = feignHdController.getDevByBaseId(userInfo.getId(), classify); List<String> machineIds = devByBaseId.stream().map(DevInfo::getId).collect(Collectors.toList()); Set<String> machineIdList = new HashSet<>(); // json转化为list for (String machineId : machineIds) { List<String> landIdsList = baseMapper.getLandIdsById(machineId); for (String landIdStr : landIdsList) { if(StringUtils.isNotBlank(landIdStr)){ JSONArray arrayStr = JSON.parseArray(landIdStr); for (Object o : arrayStr) { if (landsForVillages.contains(o)) { // 村下面的工作设备 machineIdList.add(machineId); } } } } } 优化一下代码
可以尝试使用 Java 8 的 Stream API 重构代码,如下所示:
```
Set<String> machineIdList = devByBaseId.stream()
.map(DevInfo::getId)
.flatMap(machineId -> baseMapper.getLandIdsById(machineId).stream())
.filter(StringUtils::isNotBlank)
.flatMap(landIdStr -> JSON.parseArray(landIdStr).stream())
.distinct()
.filter(landsForVillages::contains)
.map(machineIdList::add)
.collect(Collectors.toSet());
```
这段代码首先使用 `flatMap` 将 `devByBaseId` 中的每个 `DevInfo` 转换为其对应的 `machineId`,然后对于每个 `machineId`,调用 `baseMapper.getLandIdsById` 获取其对应的 `landIdsList`,并将其转换为一个 `Stream<String>`。接着对于每个 `landIdStr`,使用 `JSON.parseArray` 将其转换为一个 `JSONArray`,然后将其中的每个元素转换为 `String`,并去重。最后,使用 `filter` 过滤出 `landsForVillages` 中包含的元素,并将其对应的 `machineId` 添加到 `machineIdList` 中,最终使用 `collect` 将其转换为一个 `Set<String>`。
public PageResult<ServerReqVO> setDeptName(PageResult<ServerReqVO> serverReqVOPageResult) { if (serverReqVOPageResult.getTotal()==0){ return serverReqVOPageResult; }else { List<ServerReqVO> list = serverReqVOPageResult.getList(); List<Long> ids = list.stream().map(ServerReqVO::getId).collect(Collectors.toList()); List<DeptRespDTO> depts = deptApi.getDepts(ids); List<String> deptNames = depts.stream().map(DeptRespDTO::getName).collect(Collectors.toList()); int deptNameId = 0; for (ServerReqVO serverReqVO : list) { serverReqVO.setDeptName(deptNames.get(deptNameId)); deptNameId++; } return serverReqVOPageResult.setList(list); } }
这是一个 Java 代码片段,它的功能是根据一组服务器请求的 ID,获取这些服务器所属的部门名称,并将部门名称设置到对应的服务器请求对象中。如果服务器请求对象列表为空,则直接返回该列表;否则,通过调用 deptApi.getDepts(ids) 方法获取部门信息,然后将部门名称设置到服务器请求对象中,并返回更新后的服务器请求对象列表。
阅读全文