Interface QuadConstraintCollector<A,B,C,D,ResultContainer_,Result_>

Type Parameters:
A - the type of the first fact of the tuple in the source QuadConstraintStream
B - the type of the second fact of the tuple in the source QuadConstraintStream
C - the type of the third fact of the tuple in the source QuadConstraintStream
D - the type of the fourth fact of the tuple in the source QuadConstraintStream
ResultContainer_ - the mutable accumulation type (often hidden as an implementation detail)
Result_ - the type of the fact of the tuple in the destination ConstraintStream It is recommended that this type be deeply immutable. Not following this recommendation may lead to hard-to-debug hashing issues down the stream, especially if this value is ever used as a group key.

public interface QuadConstraintCollector<A,B,C,D,ResultContainer_,Result_>
Usually created with ConstraintCollectors. Used by QuadConstraintStream.groupBy(QuadFunction, QuadConstraintCollector), ...

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:
  • Method Details

    • supplier

      A lambda that creates the result container, one for each group key combination.
      Returns:
      never null
    • 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 lambda is called when the facts no longer matches.
    • finisher

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