使用list.stream() 流对象进行处理
//源list集合
List<SysAppoperation> list = sysAppoperationMapper.selectList(new QueryWrapper<SysAppoperation>().lambda()
.in(SysAppoperation::getSfApplicationId,defaultApp.getSfVal().split(",")));
//处理过后list集合
List<SysAuthAppVO> appList=list.stream().collect(Collectors.groupingBy(SysAppoperation::getSfApplicationId))
.entrySet().stream().map(entity ->{
//获取应用中的操作集合
List<SysAuthOperationVO> operations=new ArrayList<>();
entity.getValue().stream().forEach(st-> {
SysAuthOperationVO vos=new SysAuthOperationVO();
vos.setSfOperationId(st.getSfOperationId());
operations.add(vos);
});
//返回应用操作对象
SysAuthAppVO vo=new SysAuthAppVO();
vo.setSfApplicationId(entity.getKey());
vo.setOperations(operations);
return vo;
}).collect(Collectors.toList());
其中Collectors.groupingBy 处理过后得到的是一个map集合,key为分组字段,value为分组的list集合。