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()
AggregateOperationfinish
 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)
AggregateOperationexport
 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 © 2023 Hazelcast, Inc.. All rights reserved.