如何将多个断言应用于java.util.Stream?

24 浏览
0 Comments

如何将多个断言应用于java.util.Stream?

如何将多个谓词应用于java.util.Streamfilter()方法?

这是我现在的做法,但我并不真的喜欢它。我有一个事物的Collection,我需要根据过滤器(谓词)的Collection来减少事物的数量:

Collection things = someGenerator.someMethod();
List filtered = things.parallelStream().filter(p -> {
   for (Filter f : filtersCollection) {
      if (f.test(p))
        return true;
   }
   return false;
}).collect(Collectors.toList());

我知道如果我事先知道了过滤器的数量,我可以这样做:

List filtered = things.parallelStream().filter(filter1).or(filter2).or(filter3)).collect(Collectors.toList());

但是如何在不混合编程风格的情况下应用未知数量的谓词呢?现在看起来有点丑陋...

0