常见的用法如下:
//查找身高在1.8米及以上的男生
List<StudentInfo> boys = studentList.stream().filter(s->s.getGender() && s.getHeight() >= 1.8).collect(Collectors.toList());
没用之前的写法是这样:
@Override
public List<ApiGroupEntityDTO> queryApiGroupList() {
List<ApiGroupEntityDTO> resGrpList =new ArrayList<>();
List<ApiGroupDTO> grpList = apiGroupDao.queryAllGroup();
if (grpList != null && grpList.size() > 0) {
for (ApiGroupDTO apigrp : grpList) {
ApiGroupEntityDTO resApiGroup = new ApiGroupEntityDTO();
resApiGroup.setGroupId(apigrp.getGroupId());
resApiGroup.setGroupName(apigrp.getGroupName());
resApiGroup.setSort(apigrp.getSort());
resApiGroup.setApiCount(apigrp.getApiCount());
resGrpList.add(resApiGroup);
}
}
List<ApiGroupDTO> apiIngrpList = apiGroupDao.queryAllApiInGroup();
if(apiIngrpList!=null&&apiIngrpList.size()>0){
for(ApiGroupEntityDTO resGrp:resGrpList){
List<ApiInformationDTO> resApiList = new ArrayList<>();
for(ApiGroupDTO apiInGrp:apiIngrpList){
if(resGrp.getGroupId().equals(apiInGrp.getGroupId())){
ApiInformationDTO resApi= new ApiInformationDTO();
resApi.setApiId(apiInGrp.getApiId());
resApi.setApiName(apiInGrp.getApiName());
resApiList.add(resApi);
}
}
if(resApiList!=null&&resApiList.size()>0){
resGrp.setApiList(resApiList);
}
}
}
return resGrpList;
}
用了之后的写法是这样:
@Override
public List<ApiGroupEntityDTO> queryApiGroupList() {
List<ApiGroupDTO> grpList = apiGroupDao.queryAllGroup();
List<ApiGroupDTO> apiIngrpList = apiGroupDao.queryAllApiInGroup();
List<ApiGroupEntityDTO> resGrpList = grpList.stream().map(apiGroupDTO -> {
ApiGroupEntityDTO resApiGroup = new ApiGroupEntityDTO();
BeanUtils.copyProperties(apiGroupDTO,resApiGroup);
return resApiGroup;
}).collect(Collectors.toList());
resGrpList.forEach(apiGroupEntityDTO -> {
List<ApiInformationDTO> apiInfoList = apiIngrpList.stream().filter(apiGroupDTO -> apiGroupDTO.getGroupId().equals(apiGroupEntityDTO.getGroupId())).map(apiGroup -> {
ApiInformationDTO resApi = new ApiInformationDTO();
BeanUtils.copyProperties(apiGroup, resApi);
return resApi;
}).collect(Collectors.toList());
apiGroupEntityDTO.setApiList(apiInfoList);
});
return resGrpList;
}
其中的实体类为:
@Data
public class ApiGroupEntityDTO implements Comparable<ApiGroupEntityDTO>,Serializable {
/**
* 组id
*/
private Long groupId;
/**
* 组名称
*/
private String groupName;
/**
* 排序字段
*/
private int sort;
/**
* 每个分组中的api数量
*/
private int apiCount;
/**
* 分组下的api集合
*/
private List<ApiInformationDTO> apiList;
@Override
public int compareTo(ApiGroupEntityDTO o) {
int i = this.getSort() - o.getSort();//按照排序字段进行排序
return i;
}
}