1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 两个List合并 List集合中的对象根据某个相同的属性 合并另外属性

两个List合并 List集合中的对象根据某个相同的属性 合并另外属性

时间:2024-04-17 11:29:10

相关推荐

两个List合并 List集合中的对象根据某个相同的属性 合并另外属性

场景描述:

因为是在不同的数据库里,所以不能使用sql联合查询,所以只能采用List封装数据和另一个List封装数据拼接成一个结果集。

方法:

根据共同的字段id,将一个对象List遍历, 放到map集合<id,object1>。然后遍历另外一个对象List,比较id, id相等,取出object1的值,和object2的值,放到新的对象newObject。

R<List<UserVO>> r = adminClient.querySysUserListByReqVo(reqVo);List<UserVO> userVOList = r.getData();if(CollectionUtils.isEmpty(userVOList)){return respDtoIPage;}//将userVo对象根据对应的userId放到mapMap<Long,UserVO> userVOMap = new HashMap<>();// 将list中的数据转成json字符串String jsonObject= JSON.toJSONString(userVOList);//将json转成需要的对象userVOList = JSONObject.parseArray(jsonObject, UserVO.class);for (UserVO userVO : userVOList) {userVOMap.put(userVO.getUserId().longValue(),userVO);userIds.add(userVO.getUserId().longValue());}//查询用户信息LambdaQueryWrapper<SysCostCenterUser> useLambda = new QueryWrapper<SysCostCenterUser>().lambda();useLambda.in(SysCostCenterUser::getSysUserId, userIds);if (null != reqVo.getEmployeeType()) {useLambda.eq(SysCostCenterUser::getEmployeeType, reqVo.getEmployeeType());}IPage<SysCostCenterUser> page = this.page(BaseService.getPage(map), useLambda);List<SysUserGetByIdRespDto> respDtos = new ArrayList<>();for (SysCostCenterUser user : page.getRecords()) {SysUserGetByIdRespDto dto = new SysUserGetByIdRespDto();Long userId = user.getSysUserId();UserVO userVO = userVOMap.get(userId);BeanUtil.copyProperties(userVO, dto);dto.setEmployeeType(user.getEmployeeType());dto.setEnableDelete(enableDelete);respDtos.add(dto);}

说明:

R<List> r = adminClient.querySysUserListByReqVo(reqVo); 是调用其他微服务接口获取的封装对象,返回的格式都是封装好了的json格式,getData()得到其中的data数据,再用list去接收它。用postman去测试接口,能得到相应的数据,但是如果我遍历该集合,则会出现以下错误:

解决思路:从list中取出来的数据需要进行转化成json格式字符串,然后再将该json格式字符串转换成对象,这样就不会再出现报错情况,能成功遍历该list列表。

使用fast-json对其进行转换:

// 将list中的数据转成json字符串String jsonObject= JSON.toJSONString(userVOList);//将json转成需要的对象userVOList = JSONObject.parseArray(jsonObject, UserVO.class);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。