避免使用双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 流处理
    
  if (map!=null&&map1!=null){
 			 //循环匹配数值
            for (PartyGeneralChangeEntity gc:res){
                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());
                }
                if (map.get(gc.getCPostion())!=null){
              gc.setCPostion(map.get(gc.getCPostion()).getStdName());
                }
            }
        }

   使用这样的方法是因为在关联表中只能存id来进行关联,查询出来的数据需要显示关联字段对应的文字时应用,这样使用可以避免双for.



版权声明:本文为qq_45697615原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。