①. allMatch全匹配
-
①. 判断数据列表中全部元素都符合设置的predicate条件,如果是就返回true,否则返回false,流为空时总是返回true
-
②. 接口定义:boolean allMatch(Predicate<? super T> predicate)
-
③. 方法描述:在allMatch接口定义中是接收Predicate 类型参数,在Lamdba表达式中Predicate 是接收一个T类型参数,然后经过逻辑验证返回[布尔值]结果。这里allMatch表示,判断的条件里,全部元素符合条件,就返回true值
List<JSONObject> o0o0= new ArrayList<>();
JSONObject o0= new JSONObject();
o0.put("itemunit", 0);
o0.put("mat_no", "mat_no");
o0.put("warehouseid", "warehouseid");
o0.put("position_no", "position_no");
o0.put("batch", "batch");
o0o0.add(o0);
JSONObject o0o = new JSONObject();
o0o.put("itemunit", 0);
o0o.put("mat_no", "mat_no");
o0o.put("warehouseid", "warehouseid");
o0o.put("position_no", "position_no");
o0o.put("batch", "batch");
o0o0.add(o0o );
boolean b =o0o0.stream().allMatch(doc-> doc.getIntValue("itemunit")==0);
System.out.println(b);
// 结果: true
/**
* 根据状态获取状态值
* 子单状态一致,返回对应的枚举code
* 子单状态不一致,则返回状态"7" 部分发货
*
* @param orderStatuses 状态列表
* @return 状态code
*/
public static String getStatusByStatusList(List<String> orderStatuses) {
for (TkOrderStatusEnum value : TkOrderStatusEnum.values()) {
if (orderStatuses.stream().allMatch(status -> status.equals(value.getStatus()))) {
return value.getCode();
}
}
return PARTIAL_DELIVERY.getCode();
}
②. anyMatch部分匹配
-
①. 判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false
-
②. 接口定义:[boolean] anyMatch(Predicate<? super T> predicate)
-
③. 方法描述:在anyMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 Predicate 是接收一个T类型参数,然后经过逻辑验证返回布尔值结果。这里anyMatch表示,判断的条件里,任意一个元素符合条件,就返回true值
-
④. 案例展示:
List<JSONObject> o0o0= new ArrayList<>();
JSONObject o0= new JSONObject();
o0.put("itemunit", 0);
o0.put("mat_no", "mat_no");
o0.put("warehouseid", "warehouseid");
o0.put("position_no", "position_no");
o0.put("batch", "batch");
o0o0.add(o0);
JSONObject o0o = new JSONObject();
o0o.put("itemunit", 0);
o0o.put("mat_no", "mat_no");
o0o.put("warehouseid", "warehouseid");
o0o.put("position_no", "position_no");
o0o.put("batch", "batch");
o0o0.add(o0o );
boolean b=o0o0.stream().anyMatch(doc-> doc.getIntValue("itemunit")!=0);
System.out.println(b);
//结果: false
// 导出错误文件
if (activityExcelModels.stream().anyMatch(excelModel -> StringUtils.isNotEmpty(excelModel.getErrorMsg()))) {
// 如果有一个错误,就需要将Excel导出
uploadDiscountExportTask(id, activityExcelModels);
return;
}
③. noneMatch不匹配
-
①. 判断数据列表中全部元素都不符合设置的predicate条件,如果是就返回true,否则返回false,流为空时总是返回true
-
②. 接口定义:boolean noneMatch(Predicate<? super T> predicate)
-
③. 方法描述:在noneMatch接口定义中是接收 Predicate 类型参数,在Lamdba表达式中Predicate 是接收一个T类型参数,然后经过逻辑验证返回布尔值结果。这里noneMatch表示与allMatch相反,判断的条件里的元素,所有的元素都不符合,就返回true值
-
④. 示例
List<JSONObject> o0o0= new ArrayList<>();
JSONObject o0= new JSONObject();
o0.put("itemunit", 0);
o0.put("mat_no", "mat_no");
o0.put("warehouseid", "warehouseid");
o0.put("position_no", "position_no");
o0.put("batch", "batch");
o0o0.add(o0);
JSONObject o0o = new JSONObject();
o0o.put("itemunit", 0);
o0o.put("mat_no", "mat_no");
o0o.put("warehouseid", "warehouseid");
o0o.put("position_no", "position_no");
o0o.put("batch", "batch");
o0o0.add(o0o );
boolean b=o0o0.stream().noneMatch(doc-> doc.getIntValue("itemunit")==0);
System.out.println(b);
// 结果:false