我对某些List<a> listOfA
执行了以下几个过滤步骤:
listOfA.stream()
.filter(methodAWithPredicate(someArg))
.filter(methodBWithPredicate(someArg))
.filter(methodCWithPredicate(someArg))
.collect(Collectors.toList());
但是,我希望第二个过滤器是有条件的;即,仅在满足某些条件(例如x> 0)时才应使用该方法。在上面的代码中内联执行此操作的好方法是什么,而不必像下面那样制作整个if-else块:
if (x>0) {
return listOfA.stream()
.filter(methodAWithPredicate(someArg))
.filter(methodBWithPredicate(someArg))
.filter(methodCWithPredicate(someArg))
.collect(Collectors.toList());
} else {
return listOfA.stream()
.filter(methodAWithPredicate(someArg))
.filter(methodCWithPredicate(someArg))
.collect(Collectors.toList());
}
return listOfA.stream()
.filter(methodAWithPredicate(someArg))
.filter(methodBWithPredicate(someArg))
.filter(x > 0 ? methodCWithPredicate(someArg) : a -> true)
.collect(Collectors.toList());
选项1: