diff options
Diffstat (limited to 'subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java')
-rw-r--r-- | subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java new file mode 100644 index 00000000..74dbd335 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java | |||
@@ -0,0 +1,20 @@ | |||
1 | package tools.refinery.store.query.term; | ||
2 | |||
3 | import java.util.stream.Stream; | ||
4 | |||
5 | public interface StatelessAggregator<R, T> extends Aggregator<R, T> { | ||
6 | R add(R current, T value); | ||
7 | |||
8 | R remove(R current, T value); | ||
9 | |||
10 | @Override | ||
11 | default R aggregateStream(Stream<T> stream) { | ||
12 | var accumulator = getEmptyResult(); | ||
13 | var iterator = stream.iterator(); | ||
14 | while (iterator.hasNext()) { | ||
15 | var value = iterator.next(); | ||
16 | accumulator = add(accumulator, value); | ||
17 | } | ||
18 | return accumulator; | ||
19 | } | ||
20 | } | ||