List<String> areaNameList = customerInfoAllList.stream().map(i -> i.getAreaName()).distinct().collect(Collectors.toList());
时间: 2024-05-31 14:13:55 浏览: 9
这段代码使用了Java8的Stream API,对一个包含多个CustomerInfo对象的List进行操作,得到一个仅包含不同地区名称的List。
具体实现过程如下:
1. 调用customerInfoAllList的stream()方法,将其转换为一个Stream对象。
2. 调用map()方法,将每个CustomerInfo对象映射为其地区名称。
3. 调用distinct()方法,去除重复的地区名称。
4. 调用collect()方法,将处理后的结果收集到一个List中。
最终得到的List中,包含了所有不同的地区名称。
相关问题
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列表。
优化一下代码 public IPage<FavoriteResp> favoritePage(IPage<FavoriteResp> page, String name, BladeUser bladeUser) { List<FavoriteResp> favoriteRespList; if (!AuthUtil.isAdministrator()) { favoriteRespList = baseMapper.favoritePage(page, name, bladeUser.getUserId()); } else { favoriteRespList = baseMapper.favoritePage(page, name, null); } List<SharedInfo> sharedInfoList = getSharedInfoList(); for (FavoriteResp favoriteResp : favoriteRespList) { List<SharedInfo> sharedInfos = sharedInfoList.stream().filter(sharedInfo -> sharedInfo.getResourcesId().equals(favoriteResp.getResourcesId())).collect(Collectors.toList()); favoriteResp.setResourcesTypeCn(DictCache.getValue(DictEnum.RESOURCES_TYPE, favoriteResp.getResourcesType())); List<String> memberImages = sharedInfos.stream().map(sharedInfo -> UserCache.getUser(sharedInfo.getSharedTo()).getAvatar()) .distinct().collect(Collectors.toList()); favoriteResp.setMemebersImage(memberImages); } return page.setRecords(favoriteRespList); }
可以使用左连接的方式一次性查询出所有需要的数据,避免多次查询数据库,从而提高查询效率。以下是优化后的代码:
```java
public IPage<FavoriteResp> favoritePage(IPage<FavoriteResp> page, String name, BladeUser bladeUser) {
QueryWrapper<FavoriteResp> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("f.name", name)
.eq(bladeUser != null, "f.user_id", bladeUser.getUserId())
.orderByDesc("f.create_time");
IPage<FavoriteResp> favoritePage = baseMapper.selectFavoritePage(page, queryWrapper);
List<FavoriteResp> favoriteList = favoritePage.getRecords();
if (CollUtil.isNotEmpty(favoriteList)) {
List<Long> resourcesIds = favoriteList.stream().map(FavoriteResp::getResourcesId).distinct().collect(Collectors.toList());
List<SharedInfo> sharedInfoList = getSharedInfoList(resourcesIds);
Map<Long, List<SharedInfo>> sharedInfoMap = sharedInfoList.stream().collect(Collectors.groupingBy(SharedInfo::getResourcesId));
for (FavoriteResp favoriteResp : favoriteList) {
favoriteResp.setResourcesTypeCn(DictCache.getValue(DictEnum.RESOURCES_TYPE, favoriteResp.getResourcesType()));
List<SharedInfo> sharedInfoSubList = sharedInfoMap.get(favoriteResp.getResourcesId());
if (CollUtil.isNotEmpty(sharedInfoSubList)) {
List<String> memberImages = sharedInfoSubList.stream()
.map(sharedInfo -> UserCache.getUser(sharedInfo.getSharedTo()).getAvatar())
.distinct().collect(Collectors.toList());
favoriteResp.setMemebersImage(memberImages);
}
}
}
return favoritePage;
}
private List<SharedInfo> getSharedInfoList(List<Long> resourcesIds) {
QueryWrapper<SharedInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.in("resources_id", resourcesIds);
return sharedInfoService.list(queryWrapper);
}
```
上述代码中,首先使用QueryWrapper构建查询条件,并调用baseMapper.selectFavoritePage查询出需要的FavoriteResp数据。然后,使用stream的方式将FavoriteResp集合中所有的resourcesId提取出来,去重后构建一个resourcesIds列表。接着,调用getSharedInfoList方法一次性查询出resourcesIds列表中所有的SharedInfo集合。使用stream的方式将SharedInfo集合按resourcesId分组,构建一个sharedInfoMap映射表。最后,遍历FavoriteResp集合,从sharedInfoMap中取出对应的SharedInfo集合,并使用stream的方式将数据处理后放回FavoriteResp中。最后返回IPage<FavoriteResp>对象。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)