筛选出List里面某个字段的值并去重
List<String> existExamNoList = students.stream()
.map(ExamStudent::getExamNo)
.distinct()
.collect(Collectors.toList());
筛选集合中符合条件的唯一对象
AnalysisTaskPo taskPo = analysisTaskPoList.stream()
.filter(analysisTask -> analysisTask.getUniqueCode().equals(compareCode))
.findFirst().get();
根据集合中某个字段进行分组
根据集合中的AnalysisTaskPo对象的getAiffdz字段进行分组,分组结果groupedByAiffdz这个map的Key是getAiffdz这个分组字段的值
// 使用Stream API和groupingBy收集器进行分组
Map<String, List<AnalysisTaskPo>> groupedByAiffdz = compareAnalysisList.stream()
.collect(Collectors.groupingBy(AnalysisTaskPo::getAiffdz));
// 输出结果
groupedByAiffdz.forEach((key, value) -> System.out.println("Key: " + key + ", Values: " + value));
根据某个条件查询集合中的某个元素
// 使用 Stream API 进行过滤
Optional<TwoOriginFilePo> result = originFileList.stream()
.filter(originFile -> originFile.getMc().toLowerCase().equals(posFile.getMc().toLowerCase()))
.findFirst();
// 检查是否找到了匹配的对象
if (result.isPresent()) {
TwoOriginFilePo twoOriginFilePo = result.get();
MergeUtil.merge(posFile, twoOriginFilePo);
}
调用第三方接口时传参
JSONArray spotJsonArray = new JSONArray();
List<JSONObject> analysisSpotList = twoAnalysePos.stream()
.map(twoAnalysePo -> {
JSONObject spotJson = new JSONObject();
spotJson.put("bsm", twoAnalysePo.getTbbsm());
spotJson.put("issued", 1);
return spotJson;
}).collect(Collectors.toList());
spotJsonArray.addAll(analysisSpotList);
把一个集合的某些字段抽离出来封装成一个新的集合
首先要给要抽离出来的某些字段封装成一个新的对象,例如我这里的MapTaskVO
List<MapTaskVO> mapTaskVOS = allMapList.stream().map(allMapTask -> new MapTaskVO(allMapTask.getId(), allMapTask.getYpdz())).collect(Collectors.toList());
将集合中的每个元素的某个字段拼接成一个字符串
//List<DemandTransfer>
String result = demandTransferList.stream()
.map(DemandTransfer::getTransferDeptName)
.collect(Collectors.joining("、"));
//List<String>
String btbsm = dtbsmList.stream()
.map(String::toString)
.collect(Collectors.joining(","));
判断两个集合所有元素的某个字段是否相同【anyMatch】
这里的业务场景是导入的时候,要判断导入的list和数据库查询的list里面的元素是否有重复的,通常就是根据id或者某个唯一字段去判断
// 查询已经存在的所有企业
List<DemandCompany> demandCompaniesDaoList = demandCompanyMapper.selectList(null);
Iterator<DemandCompany> iterator = demandCompanies.iterator();
while (iterator.hasNext()){
DemandCompany demandCompany = iterator.next();
//更新已经存在的企业信息【存在就更新,不存在就新增】
boolean isExist = demandCompaniesDaoList.stream().anyMatch(company -> company.getCompanyUniscid().equals(demandCompany.getCompanyUniscid()));
}
把字符串分割成数组后过滤掉后变成list
// 把字符串分割成数组后过滤掉后变成list
List<String> meetingReminderArr = Arrays
.stream(meetingReminder.split(","))
.filter(StringUtils::isNotBlank)
.collect(Collectors.toList());
filter过滤数据
//过滤出导入失败的数据(用于导出)
List<GroupPerson> failGroupPersonList = groupPersonList.stream()
.filter(groupPerson -> groupPerson.getImpState().equals("0"))
.collect(Collectors.toList());
// 校验groupPersonList是否存在多个属性都为null的情况
boolean hasMultipleNullProperties = groupPersonList.stream()
.anyMatch(person -> person.getUserName() == null && person.getPhone() == null);
//把枚举类的值收集成一个map
Arrays.stream(ConferenceReminderTimeEnum.values()).collect(Collectors.toMap(e -> e.value, e -> e))
好文参考:stream流的介绍和使用-CSDN博客
好文参考:Stream流使用-CSDN博客