如何将多个谓词应用于java.util.Stream?
如何将多个谓词应用于一个方法?java.util.Stream's
filter()
这就是我现在所做的,但我真的不喜欢它。我有一个东西,我需要根据过滤器(谓词)减少事情的数量:Collection
Collection
Collection<Thing> things = someGenerator.someMethod();
List<Thing> filtered = things.parallelStream().filter(p -> {
for (Filter f : filtersCollection) {
if (f.test(p))
return true;
}
return false;
}).collect(Collectors.toList());
我知道,如果我事先知道过滤器的数量,我可以做这样的事情:
List<Thing> filtered = things.parallelStream().filter(filter1).or(filter2).or(filter3)).collect(Collectors.toList());
但是,如何在不混合编程风格的情况下应用未知数量的谓词呢?因为知道它看起来有点丑陋...