diff --git a/src/main/java/it/cavallium/dbengine/utils/StreamUtils.java b/src/main/java/it/cavallium/dbengine/utils/StreamUtils.java index 3a0f939..abbe48b 100644 --- a/src/main/java/it/cavallium/dbengine/utils/StreamUtils.java +++ b/src/main/java/it/cavallium/dbengine/utils/StreamUtils.java @@ -5,6 +5,7 @@ import com.google.common.collect.Streams; import it.cavallium.dbengine.utils.PartitionByIntSpliterator.IntPartition; import it.cavallium.dbengine.utils.PartitionBySpliterator.Partition; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; @@ -26,6 +27,7 @@ import java.util.function.BiFunction; import java.util.function.BinaryOperator; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Predicate; import java.util.function.Supplier; import java.util.function.ToIntFunction; import java.util.stream.Collector; @@ -377,6 +379,32 @@ public class StreamUtils { } } + public static Predicate and(Collection> predicateList) { + Predicate result = null; + for (Predicate predicate : predicateList) { + if (result == null) { + //noinspection unchecked + result = (Predicate) predicate; + } else { + result = result.and(predicate); + } + } + return result; + } + + public static Predicate or(Collection> predicateList) { + Predicate result = null; + for (Predicate predicate : predicateList) { + if (result == null) { + //noinspection unchecked + result = (Predicate) predicate; + } else { + result = result.and(predicate); + } + } + return result; + } + private record BatchSpliterator(Spliterator base, int batchSize) implements Spliterator> { @Override