T0
- the type of item in stream-0T1
- the type of item in stream-1A
- the type of the accumulatorR
- the type of the aggregation resultpublic interface AggregateOperation2<T0,T1,A,R> extends AggregateOperation<A,R>
AggregateOperation
(refer to its extensive documentation) to the "arity-2" case with
two data streams being aggregated over. AggregateOperations
contains factories for the built-in implementations and you can create
your own using the aggregate
operation builder.
This example constructs an operation that sums up long
values
from two streams:
AggregateOperation2<Long, Long, LongAccumulator, Long> aggrOp = AggregateOperation
.withCreate(LongAccumulator::new)
.<Long>andAccumulate0(LongAccumulator::add)
.<Long>andAccumulate1(LongAccumulator::add)
.andFinish(LongAccumulator::get);
All the functions must be stateless and cooperative.
Modifier and Type | Method and Description |
---|---|
BiConsumerEx<? super A,? super T0> |
accumulateFn0()
A primitive that updates the accumulator state to account for a new
item coming from stream-0.
|
BiConsumerEx<? super A,? super T1> |
accumulateFn1()
A primitive that updates the accumulator state to account for a new
item coming from stream-1.
|
<R_NEW> AggregateOperation2<T0,T1,A,R_NEW> |
andThen(FunctionEx<? super R,? extends R_NEW> thenFn)
Returns a copy of this aggregate operation, but with the
export
and finish primitives composed with the supplied thenFn . |
<T0_NEW> AggregateOperation2<T0_NEW,T1,A,R> |
withAccumulateFn0(BiConsumerEx<? super A,? super T0_NEW> newAccFn0)
Returns a copy of this aggregate operation, but with the
accumulate primitive at index 0 replaced with the one supplied here. |
<T1_NEW> AggregateOperation2<T0,T1_NEW,A,R> |
withAccumulateFn1(BiConsumerEx<? super A,? super T1_NEW> newAccFn1)
Returns a copy of this aggregate operation, but with the
accumulate primitive at index 1 replaced with the one supplied here. |
AggregateOperation2<T0,T1,A,A> |
withIdentityFinish()
Returns a copy of this aggregate operation, but with the
finish
primitive replaced with the identity function. |
accumulateFn, accumulateFn, arity, combineFn, createFn, deductFn, exportFn, finishFn, withAccumulateFns, withCombiningAccumulateFn, withCreate
@Nonnull BiConsumerEx<? super A,? super T0> accumulateFn0()
The consumer must be stateless and cooperative.
@Nonnull BiConsumerEx<? super A,? super T1> accumulateFn1()
The consumer must be stateless and cooperative.
@Nonnull <T0_NEW> AggregateOperation2<T0_NEW,T1,A,R> withAccumulateFn0(@Nonnull BiConsumerEx<? super A,? super T0_NEW> newAccFn0)
accumulate
primitive at index 0 replaced with the one supplied here.
The consumer must be stateless and cooperative.
@Nonnull <T1_NEW> AggregateOperation2<T0,T1_NEW,A,R> withAccumulateFn1(@Nonnull BiConsumerEx<? super A,? super T1_NEW> newAccFn1)
accumulate
primitive at index 1 replaced with the one supplied here.
The consumer must be stateless and cooperative.
@Nonnull AggregateOperation2<T0,T1,A,A> withIdentityFinish()
AggregateOperation
finish
primitive replaced with the identity function. It will return the
accumulator object as-is. The returned aggregate operation does not
support the export
primitive.withIdentityFinish
in interface AggregateOperation<A,R>
@Nonnull <R_NEW> AggregateOperation2<T0,T1,A,R_NEW> andThen(FunctionEx<? super R,? extends R_NEW> thenFn)
AggregateOperation
export
and finish
primitives composed with the supplied thenFn
.
This replaces exportFn
with exportFn.andThen(thenFn)
,
same for finishFn
. The main use case is to transform the result
of an existing (library-provided) aggregate operation.
The given function must be stateless and cooperative.
andThen
in interface AggregateOperation<A,R>
R_NEW
- the type of the returned aggregate operation's resultthenFn
- the function to apply to the results of export
and finish
primitivesCopyright © 2021 Hazelcast, Inc.. All rights reserved.