避免使用双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版权协议,转载请附上原文出处链接和本声明。