避免使用双for
作者:互联网
避免使用双for
在平时的开发过程中有一些地方需要使用到双for,但是想到这样的使用可能会降低代码执行的效率。
有一方法就是使用Stream。利用流的中间操作,映射。
IPage<PartyGeneralChangeEntity> page = this.page(
new Query<PartyGeneralChangeEntity>().getPage(params),
new LambdaQueryWrapper<PartyGeneralChangeEntity>().eq(PartyGeneralChangeEntity::getGId,gid)
);//Springboot的分页工具查询出数据
List<PartyGeneralChangeEntity> res=page.getRecords();//将分页工具查询出的数据=实体数组
List<PositionEntity> positionEntityList = positionService.list(new LambdaQueryWrapper<PositionEntity>().eq(PositionEntity::getUnitId, unId));//查询数据
List<PersonnelFilesEntity> personnelFilesEntityList = personnelFilesService.list(new LambdaQueryWrapper<PersonnelFilesEntity>().eq(PersonnelFilesEntity::getUnitId, unId));//查询数据
Map<String, PersonnelFilesEntity> map1 = personnelFilesEntityList.stream().collect(Collectors.toMap(personnelFilesEntity -> personnelFilesEntity.getBillId(), personnelFilesEntity -> personnelFilesEntity));//将personnelFilesEntityList 数组进行Map集合 Stream 流处理
//循环匹配数值
for (PartyGeneralChangeEntity gc:res){
//处理后的集合中值存在gc.getBePersonnel()则将实体对象中的名 称直接赋予gc.getBePersonnel()
if (map1.get(gc.getBePersonnel())!=null){
gc.setBePersonnel(map1.get(gc.getBePersonnel()).getStdName());
}
if (map1.get(gc.getNPersonnel())!=null){
gc.setNPersonnel(map1.get(gc.getNPersonnel()).getStdName());
}
}
使用这样的方法是因为在关联表中只能存id来进行关联,查询出来的数据需要显示关联字段对应的文字时应用,这样使用可以避免双for.
标签:get,getBePersonnel,避免,map1,gc,使用,new,personnelFilesEntity 来源: https://blog.csdn.net/qq_45697615/article/details/122876244