Wie wende ich mehrere Prädikate auf einen java.util.Stream an?

Wie kann ich mehrere Prädikate auf a anwenden?java.util.Stream's filter() Methode?

Das ist, was ich jetzt mache, aber ich mag es nicht wirklich. Ich habe einCollection von Dingen und ich muss die Anzahl der Dinge auf der Grundlage der reduzierenCollection von Filtern (Prädikaten):

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());

Ich weiß, wenn ich die Anzahl der Filter vorher wüsste, könnte ich so etwas tun:

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

Aber wie kann ich eine unbekannte Anzahl von Prädikaten anwenden, ohne Programmierstile zu mischen? Weißt du, es sieht irgendwie hässlich aus ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage