多过滤条件 条件不为空再进filter
因为要判断条件不为空再去filter过滤条件,导致多个filter的现象,优化后代码如下
//各种过滤条件
List<CpCategory> collect = cpCategoryList.stream().filter(cpCategory ->
filterData(cpCategory, accessWay, cpCategoryName, startDate, endDate)).collect(Collectors.toList()).;
private boolean filterData(CpCategory cpCategory, String accessWay, String cpCategoryName, String startDate, String endDate) {
boolean accessWayBln = true;
boolean cpCategoryNameBln = true;
boolean dateBln = true;
if (StringUtils.isNotBlank(accessWay)) {
accessWayBln = accessWay.equals(cpCategory.getAccessWay());
}
if (StringUtils.isNotBlank(cpCategoryName)) {
cpCategoryNameBln = cpCategory.getCpCategoryName().contains(cpCategoryName);
}
if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
try {
dateBln = simpleDateFormat.parse(cpCategory.getUpdateTime()).getTime() > simpleDateFormat.parse(startDate).getTime() &&
simpleDateFormat.parse(cpCategory.getUpdateTime()).getTime() < simpleDateFormat.parse(endDate).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
}
return accessWayBln && cpCategoryNameBln && dateBln;
注意:返回一定要是&&关系
仅供参考