其他分享
首页 > 其他分享> > 避免使用双for

避免使用双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