过滤筛选出集合中元素属性Status为0的元素
List<LiveStreamVo> liveStreamListWait = liveStreamVo.stream()
.filter(vo -> (0 == vo.getStatus()))
.collect(Collectors.toList());
集合中的元素按照某属性字段倒序(本案例为按照时间倒序,默认为升序,倒序加.reversed())
List<LiveStreamVo> liveStreamListWait = liveStreamVo.stream()
.sorted(Comparator.comparing(LiveStreamVo::getStartTime).reversed())
.collect(Collectors.toList());
集合中的元素按照某属性进行分组
Map<String, List<ExportActivityOrderVo>> collect = activityOrderVos.stream()
.collect(Collectors.groupingBy(ExportActivityOrderVo::getActivityId));
List集合转Map结构
Map<String, ActivityMainInfoVo> activityTypeMap = activityMainRData.stream()
.collect(Collectors.toMap(ActivityMainInfoVo::getId, v -> v));
利用Stream流进行分页
List<ActivityMain> collect = activityMains.stream()
.skip((page.getCurrent() - 1) * page.getSize())
利用Stream流,获取集合中元素的某一属性,(本案例返回ActivityCode集合)
List<String> activityCodeList= activityMainRData.stream()
.map(ActivityMainInfoVo::getActivityCode)
.collect(Collectors.toList());
将某些参数拼接为字符串
String collect = sonProjects.stream()
.map(obj -> obj.getProjectName() + "(" + obj.getProjectNum() + ")")
.collect(Collectors.joining("/"));
复杂的流转换 key:业务Id,(key:业务类型,value:文件信息)
Map<String, Map<String, List<AttachmentFileViewDTO>>> = attachmentFileList.stream()
.collect(Collectors.groupingBy(AttachmentFile::getBusinessId,
Collectors.groupingBy(AttachmentFile::getBusinessType,
Collectors.collectingAndThen(
Collectors.toList(),
list -> {
List<AttachmentFileViewDTO> viewDTOList = new ArrayList<>();
list.forEach(k->{
AttachmentFileViewDTO viewDTO = new AttachmentFileViewDTO();
viewDTO.setId(k.getId());
viewDTO.setFileName(k.getFileName());
viewDTO.setOriginalFileName(k.getOriginalFileName());
viewDTO.setFileExtension(k.getFileExtension());
// 后缀为图片类型,转base64
if (FileUtils.imageExtension.contains(k.getFileExtension())) {
viewDTO.setImageBase64(FileUtils.getImageAsBase64(k.getFilePath()));
}
viewDTOList.add(viewDTO);
});
return viewDTOList;
}
))));
Q.E.D.