org.optaplanner.core.api.score.stream.bi

## Interface BiConstraintCollector<A,B,ResultContainer_,Result_>

- Type Parameters:
    `A` - the type of the first fact of the tuple in the source `BiConstraintStream`
    `B` - the type of the second fact of the tuple in the source `BiConstraintStream`
    `ResultContainer_` - the mutable accumulation type (often hidden as an implementation detail)
    `Result_` - the type of the fact of the tuple in the destination `ConstraintStream`
  All Known Implementing Classes:
    DefaultBiConstraintCollector

      public interface BiConstraintCollector<A,B,ResultContainer_,Result_>

  Usually created with `ConstraintCollectors`. Used by `BiConstraintStream.groupBy(BiFunction, BiConstraintCollector)`, ...

  Loosely based on JDK's `Collector`, but it returns an undo operation for each accumulation to enable incremental score calculation in `constraint streams`.

  See Also:
    `ConstraintCollectors`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `TriFunction<ResultContainer_,A,B,Runnable>` | `accumulator()` A lambda that extracts data from the matched facts, accumulates it in the result container and returns an undo operation for that accumulation.
    `Function<ResultContainer_,Result_>` | `finisher()` A lambda that converts the result container into the result.
    `Supplier<ResultContainer_>` | `supplier()` A lambda that creates the result container, one for each group key combination.

- - ### Method Detail

    - #### supplier

          Supplier<ResultContainer_> supplier()

      A lambda that creates the result container, one for each group key combination.
      Returns:
        never null

    - #### accumulator

          TriFunction<ResultContainer_,A,B,Runnable> accumulator()

      A lambda that extracts data from the matched facts, accumulates it in the result container and returns an undo operation for that accumulation.
      Returns:
        never null, the undo operation. This lamdba is called when the facts no longer matches.

    - #### finisher

          Function<ResultContainer_,Result_> finisher()

      A lambda that converts the result container into the result.
      Returns:
        never null

Copyright © 2006–2021 JBoss by Red Hat. All rights reserved.