Interface UniConstraintCollector<A,ResultContainer_,Result_>

Type Parameters:
A - the type of the one and only fact of the tuple in the source UniConstraintStream
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 UniConstraintCollector<A,ResultContainer_,Result_>
Usually created with ConstraintCollectors. Used by UniConstraintStream.groupBy(Function, UniConstraintCollector), ...

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 fact, 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 fact no longer matches.
    • finisher

      A lambda that converts the result container into the result.
      Returns:
      null when the result would be invalid, such as maximum value from an empty container.