List<ProjWorkCostVerVO> projWorkCostVerVOS = new ArrayList<>(); Map<String, String> costId2IdMap = projWorkCostVerVOS.stream().filter(item -> { if (StringUtils.isEmpty(item.getCostId()) || StringUtils.isEmpty(item.getId())) { return false; } return true; }).collect(Collectors.toMap(ProjWorkCostVerVO::getCostId, ProjWorkCostVerVO::getId, (item1, item2) -> (item1))); 把以上代码转换成 for循环
时间: 2024-02-14 07:14:42 浏览: 66
以下是将代码转换为 for 循环的代码:
```
List<ProjWorkCostVerVO> projWorkCostVerVOS = new ArrayList<>();
Map<String, String> costId2IdMap = new HashMap<>();
for (ProjWorkCostVerVO item : projWorkCostVerVOS) {
if (!StringUtils.isEmpty(item.getCostId()) && !StringUtils.isEmpty(item.getId())) {
costId2IdMap.put(item.getCostId(), item.getId());
}
}
```
这段代码的功能是过滤出 `ProjWorkCostVerVO` 对象列表中 `costId` 和 `id` 都不为空的元素,然后将其转换为一个 `Map` 对象,其中 `costId` 作为键,`id` 作为值。
相关问题
List<TBmwyResolvedevicedata> list = new ArrayList<>();这是第一个集合。 List<String> dateList = new ArrayList<>();这是第二个集合,我现在要以第一个集合为主进行左连接
左连接通常是针对两个数据表进行的,而你提供的是两个集合,所以需要先将集合转换为数据表。可以使用 Java 中的 Stream API 来实现左连接操作。下面是一个示例代码:
```
List<TBmwyResolvedevicedata> list = new ArrayList<>();
List<String> dateList = new ArrayList<>();
// 将两个集合转换为数据表
Map<String, TBmwyResolvedevicedata> map = list.stream()
.collect(Collectors.toMap(TBmwyResolvedevicedata::getDate, Function.identity()));
// 进行左连接操作
List<TBmwyResolvedevicedata> result = dateList.stream()
.map(date -> map.getOrDefault(date, new TBmwyResolvedevicedata()))
.collect(Collectors.toList());
```
这段代码将第一个集合转换为一个以 `date` 字段为键,`TBmwyResolvedevicedata` 对象为值的 Map,然后以第二个集合为基础,对 Map 进行左连接操作,得到最终的结果集合。
优化下面的代码 public Page<FinanceCodeDTO> selectFinanceCodePage(FinanceCodeListVO financeCodeListVO) { //根据类型关联查询数据信息 Page<FinanceCodeDTO> page = new Page<>(financeCodeListVO.getPageNo(),financeCodeListVO.getPageSize()); Page<FinanceCodeDTO> dtoPage = financeCodeMapper.financeCodeList(page, financeCodeListVO); List<FinanceCodeDTO> dtos = dtoPage.getRecords(); List<String> contractIds = dtos.stream().map(FinanceCodePO::getContractIds).collect(Collectors.toList()); List<Integer> idList = new ArrayList<>(); contractIds.forEach(ids -> { if (ToolUtil.isNotEmpty(ids) && !ToolUtil.equals("[]",ids)){ List<Integer> list = JSONObject.parseArray(ids, Integer.class); idList.addAll(list); } }); if (ToolUtil.isNotEmpty(idList)){ CustomerContractPO customerContractPO = new CustomerContractPO(); List<CustomerContractPO> customerContractPOS = customerContractPO.selectList(new QueryWrapper<>(customerContractPO).lambda().in(CustomerContractPO::getCustomerContractId, idList)); Map<Integer, String> map = customerContractPOS.stream().collect(Collectors.toMap(CustomerContractPO::getCustomerContractId, CustomerContractPO::getContractName)); dtos.forEach(dto ->{ if (ToolUtil.isNotEmpty(dto.getContractIds())&& !ToolUtil.equals("[]",dto.getContractIds())){ List<Integer> list = JSONObject.parseArray(dto.getContractIds(), Integer.class); List<String> names = new ArrayList<>(); list.forEach(id ->{ names.add(map.get(id)); }); dto.setContractName(String.join(",",names)); } }); dtoPage.setRecords(dtos); } return dtoPage ; }
&& ids.contains(",")) { String[] idsArr = ids.split(","); Arrays.stream(idsArr).forEach(id -> { idList.add(Integer.parseInt(id)); }); } }); List<ContractDTO> contractDTOList = contractMapper.selectContractByIdList(idList); dtos.forEach(dto -> { dto.setContractList(contractDTOList); }); return dtoPage; }答:根据给定的代码,优化的思路是把contractIds通过Arrays.stream()和Integer.parseInt()转换为idList,并通过contractMapper.selectContractByIdList()获取contractDTOList,最后把contractDTOList赋给dtos中每个dto对象。
阅读全文