Учитывая следующие функции:Vararg предикаты с Java 8 потока
public static <X> List<X> filterWithVarargPredicates(
List<X> allProducts,
Predicate<X>... predicates
) {
for (Predicate<X> predicate : predicates) {
allProducts = allProducts.stream()
.filter(predicate)
.collect(toList());
}
return allProducts;
}
Есть ли способ, чтобы потреблять все предикаты, не перебрать их и повторно назначить в списке? Например, было бы здорово, если бы у .stream()
был фильтр, который использовал varargs, или каким-то образом сделать это в пределах одного потока.
Использование гипотетических 'операции потока foldLeft', который был бы кратчайшее решение:' Stream.of (предикаты) .foldLeft (allProducts.stream(), поток: : фильтр) .collect (ToList()) '. К сожалению, нет 'foldLeft' еще ... –
@TagirValeev Вложенные потоки - верный способ запутать людей, я уверен. – immibis