## Uses of Interface
org.optaplanner.core.api.function.TriFunction

- Packages that use TriFunction
  Package | Description
  --- | ---
  org.optaplanner.core.api.score.stream | The `ConstraintStream` API: a way to define constraints for `Score` calculation.
  org.optaplanner.core.api.score.stream.bi | The `ConstraintStream` API for bi-tuples.
  org.optaplanner.core.api.score.stream.tri | The `ConstraintStream` API for tri-tuples.
  org.optaplanner.core.impl.score.stream.bavet.bi |
  org.optaplanner.core.impl.score.stream.bavet.tri |
  org.optaplanner.core.impl.score.stream.bi |
  org.optaplanner.core.impl.score.stream.drools.bi |
  org.optaplanner.core.impl.score.stream.drools.common |
  org.optaplanner.core.impl.score.stream.drools.quad |
  org.optaplanner.core.impl.score.stream.drools.tri |
  org.optaplanner.core.impl.score.stream.drools.uni |
  org.optaplanner.core.impl.score.stream.quad |
  org.optaplanner.core.impl.score.stream.tri |

- - ### Uses of TriFunction in org.optaplanner.core.api.score.stream

    Methods in org.optaplanner.core.api.score.stream with parameters of type TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `static <A,B,C> TriConstraintCollector<A,B,C,?,Integer>` | ConstraintCollectors.`countDistinct(TriFunction<A,B,C,?> groupValueMapping)`
    `static <A,B,C> TriConstraintCollector<A,B,C,?,Long>` | ConstraintCollectors.`countDistinctLong(TriFunction<A,B,C,?> groupValueMapping)`
    `static <A,B,C,D,Property_> QuadJoiner<A,B,C,D>` | Joiners.`equal(TriFunction<A,B,C,Property_> leftMapping, Function<D,Property_> rightMapping)`
    `static <A,B,C,D,Property_ extends Comparable<Property_>> QuadJoiner<A,B,C,D>` | Joiners.`greaterThan(TriFunction<A,B,C,Property_> leftMapping, Function<D,Property_> rightMapping)`
    `static <A,B,C,D,Property_ extends Comparable<Property_>> QuadJoiner<A,B,C,D>` | Joiners.`greaterThanOrEqual(TriFunction<A,B,C,Property_> leftMapping, Function<D,Property_> rightMapping)`
    `static <A,B,C,D,Property_ extends Comparable<Property_>> QuadJoiner<A,B,C,D>` | Joiners.`lessThan(TriFunction<A,B,C,Property_> leftMapping, Function<D,Property_> rightMapping)`
    `static <A,B,C,D,Property_ extends Comparable<Property_>> QuadJoiner<A,B,C,D>` | Joiners.`lessThanOrEqual(TriFunction<A,B,C,Property_> leftMapping, Function<D,Property_> rightMapping)`
    `static <A,B,C,Mapped extends Comparable<Mapped>> TriConstraintCollector<A,B,C,?,Mapped>` | ConstraintCollectors.`max(TriFunction<A,B,C,Mapped> groupValueMapping)` As defined by `ConstraintCollectors.max(Function)`.
    `static <A,B,C,Mapped> TriConstraintCollector<A,B,C,?,Mapped>` | ConstraintCollectors.`max(TriFunction<A,B,C,Mapped> groupValueMapping, Comparator<Mapped> comparator)` As defined by `ConstraintCollectors.max(Function)`, only with a custom `Comparator`.
    `static <A,B,C,Mapped extends Comparable<Mapped>> TriConstraintCollector<A,B,C,?,Mapped>` | ConstraintCollectors.`min(TriFunction<A,B,C,Mapped> groupValueMapping)` As defined by `ConstraintCollectors.min(Function)`.
    `static <A,B,C,Mapped> TriConstraintCollector<A,B,C,?,Mapped>` | ConstraintCollectors.`min(TriFunction<A,B,C,Mapped> groupValueMapping, Comparator<Mapped> comparator)` As defined by `ConstraintCollectors.min(Function)`, only with a custom `Comparator`.
    `static <A,B,C,Result> TriConstraintCollector<A,B,C,?,Result>` | ConstraintCollectors.`sum(TriFunction<? super A,? super B,? super C,Result> groupValueMapping, Result zero, BinaryOperator<Result> adder, BinaryOperator<Result> subtractor)`
    `static <A,B,C> TriConstraintCollector<A,B,C,?,BigDecimal>` | ConstraintCollectors.`sumBigDecimal(TriFunction<? super A,? super B,? super C,BigDecimal> groupValueMapping)`
    `static <A,B,C> TriConstraintCollector<A,B,C,?,BigInteger>` | ConstraintCollectors.`sumBigInteger(TriFunction<? super A,? super B,? super C,BigInteger> groupValueMapping)`
    `static <A,B,C> TriConstraintCollector<A,B,C,?,Duration>` | ConstraintCollectors.`sumDuration(TriFunction<? super A,? super B,? super C,Duration> groupValueMapping)`
    `static <A,B,C> TriConstraintCollector<A,B,C,?,Period>` | ConstraintCollectors.`sumPeriod(TriFunction<? super A,? super B,? super C,Period> groupValueMapping)`
    `static <A,B,C,Mapped,Result extends Collection<Mapped>> TriConstraintCollector<A,B,C,?,Result>` | ConstraintCollectors.`toCollection(TriFunction<A,B,C,Mapped> groupValueMapping, IntFunction<Result> collectionFunction)`
    `static <A,B,C,Mapped> TriConstraintCollector<A,B,C,?,List<Mapped>>` | ConstraintCollectors.`toList(TriFunction<A,B,C,Mapped> groupValueMapping)` Creates constraint collector that returns `List` of the given element type.
    `static <A,B,C,Key,Value> TriConstraintCollector<A,B,C,?,Map<Key,Set<Value>>>` | ConstraintCollectors.`toMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper)` As defined by `ConstraintCollectors.toMap(Function, Function)`.
    `static <A,B,C,Key,Value> TriConstraintCollector<A,B,C,?,Map<Key,Set<Value>>>` | ConstraintCollectors.`toMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper)` As defined by `ConstraintCollectors.toMap(Function, Function)`.
    `static <A,B,C,Key,Value> TriConstraintCollector<A,B,C,?,Map<Key,Value>>` | ConstraintCollectors.`toMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, BinaryOperator<Value> mergeFunction)` As defined by `ConstraintCollectors.toMap(Function, Function, BinaryOperator)`.
    `static <A,B,C,Key,Value> TriConstraintCollector<A,B,C,?,Map<Key,Value>>` | ConstraintCollectors.`toMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, BinaryOperator<Value> mergeFunction)` As defined by `ConstraintCollectors.toMap(Function, Function, BinaryOperator)`.
    `static <A,B,C,Key,Value,ValueSet extends Set<Value>> TriConstraintCollector<A,B,C,?,Map<Key,ValueSet>>` | ConstraintCollectors.`toMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, IntFunction<ValueSet> valueSetFunction)` As defined by `ConstraintCollectors.toMap(Function, Function, IntFunction)`.
    `static <A,B,C,Key,Value,ValueSet extends Set<Value>> TriConstraintCollector<A,B,C,?,Map<Key,ValueSet>>` | ConstraintCollectors.`toMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, IntFunction<ValueSet> valueSetFunction)` As defined by `ConstraintCollectors.toMap(Function, Function, IntFunction)`.
    `static <A,B,C,Mapped> TriConstraintCollector<A,B,C,?,Set<Mapped>>` | ConstraintCollectors.`toSet(TriFunction<A,B,C,Mapped> groupValueMapping)` As defined by `ConstraintCollectors.toSet(Function)`.
    `static <A,B,C,Key extends Comparable<Key>,Value> TriConstraintCollector<A,B,C,?,SortedMap<Key,Set<Value>>>` | ConstraintCollectors.`toSortedMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper)` As defined by `ConstraintCollectors.toSortedMap(Function, Function)`.
    `static <A,B,C,Key extends Comparable<Key>,Value> TriConstraintCollector<A,B,C,?,SortedMap<Key,Set<Value>>>` | ConstraintCollectors.`toSortedMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper)` As defined by `ConstraintCollectors.toSortedMap(Function, Function)`.
    `static <A,B,C,Key extends Comparable<Key>,Value> TriConstraintCollector<A,B,C,?,SortedMap<Key,Value>>` | ConstraintCollectors.`toSortedMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, BinaryOperator<Value> mergeFunction)` As defined by `ConstraintCollectors.toSortedMap(Function, Function, BinaryOperator)`.
    `static <A,B,C,Key extends Comparable<Key>,Value> TriConstraintCollector<A,B,C,?,SortedMap<Key,Value>>` | ConstraintCollectors.`toSortedMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, BinaryOperator<Value> mergeFunction)` As defined by `ConstraintCollectors.toSortedMap(Function, Function, BinaryOperator)`.
    `static <A,B,C,Key extends Comparable<Key>,Value,ValueSet extends Set<Value>> TriConstraintCollector<A,B,C,?,SortedMap<Key,ValueSet>>` | ConstraintCollectors.`toSortedMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, IntFunction<ValueSet> valueSetFunction)` As defined by `ConstraintCollectors.toSortedMap(Function, Function, IntFunction)`.
    `static <A,B,C,Key extends Comparable<Key>,Value,ValueSet extends Set<Value>> TriConstraintCollector<A,B,C,?,SortedMap<Key,ValueSet>>` | ConstraintCollectors.`toSortedMap(TriFunction<? super A,? super B,? super C,? extends Key> keyMapper, TriFunction<? super A,? super B,? super C,? extends Value> valueMapper, IntFunction<ValueSet> valueSetFunction)` As defined by `ConstraintCollectors.toSortedMap(Function, Function, IntFunction)`.
    `static <A,B,C,Mapped extends Comparable<Mapped>> TriConstraintCollector<A,B,C,?,SortedSet<Mapped>>` | ConstraintCollectors.`toSortedSet(TriFunction<A,B,C,Mapped> groupValueMapping)` As defined by `ConstraintCollectors.toSortedSet(Function)`.

  - ### Uses of TriFunction in org.optaplanner.core.api.score.stream.bi

    Methods in org.optaplanner.core.api.score.stream.bi that return TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `TriFunction<ResultContainer_,A,B,Runnable>` | BiConstraintCollector.`accumulator()` A lambda that extracts data from the matched facts, accumulates it in the result container and returns an undo operation for that accumulation.

  - ### Uses of TriFunction in org.optaplanner.core.api.score.stream.tri

    Methods in org.optaplanner.core.api.score.stream.tri with parameters of type TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `<GroupKey_> UniConstraintStream<GroupKey_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKey_> groupKeyMapping)` Convert the `TriConstraintStream` to a `UniConstraintStream`, containing the set of tuples resulting from applying the group key mapping function on all tuples of the original stream.
    `<GroupKey_,ResultContainer_,Result_> BiConstraintStream<GroupKey_,Result_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKey_> groupKeyMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)` Convert the `TriConstraintStream` to a `BiConstraintStream`, consisting of unique tuples.
    `<GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping)` Convert the `TriConstraintStream` to a `BiConstraintStream`, consisting of unique tuples.
    `<GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping)` Convert the `TriConstraintStream` to a `BiConstraintStream`, consisting of unique tuples.
    `<GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> TriConstraintStream<GroupKeyA_,GroupKeyB_,Result_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)` Combines the semantics of `TriConstraintStream.groupBy(TriFunction, TriFunction)` and `TriConstraintStream.groupBy(TriConstraintCollector)`.
    `<GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> TriConstraintStream<GroupKeyA_,GroupKeyB_,Result_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)` Combines the semantics of `TriConstraintStream.groupBy(TriFunction, TriFunction)` and `TriConstraintStream.groupBy(TriConstraintCollector)`.
    `<GroupKeyA_,GroupKeyB_,ResultContainerC_,ResultC_,ResultContainerD_,ResultD_> QuadConstraintStream<GroupKeyA_,GroupKeyB_,ResultC_,ResultD_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC_,ResultC_> collectorC, TriConstraintCollector<A,B,C,ResultContainerD_,ResultD_> collectorD)` Combines the semantics of `TriConstraintStream.groupBy(TriFunction, TriFunction)` and `TriConstraintStream.groupBy(TriConstraintCollector)`.
    `<GroupKeyA_,GroupKeyB_,ResultContainerC_,ResultC_,ResultContainerD_,ResultD_> QuadConstraintStream<GroupKeyA_,GroupKeyB_,ResultC_,ResultD_>` | TriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC_,ResultC_> collectorC, TriConstraintCollector<A,B,C,ResultContainerD_,ResultD_> collectorD)` Combines the semantics of `TriConstraintStream.groupBy(TriFunction, TriFunction)` and `TriConstraintStream.groupBy(TriConstraintCollector)`.
    `default Constraint` | TriConstraintStream.`impactBigDecimal(String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)` Positively or negatively impact the `Score` by the constraintWeight multiplied by the match weight.
    `Constraint` | TriConstraintStream.`impactBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)` As defined by `TriConstraintStream.impactBigDecimal(String, Score, TriFunction)`.
    `Constraint` | TriConstraintStream.`impactConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)` As defined by `TriConstraintStream.impactConfigurableBigDecimal(String, TriFunction)`.
    `default Constraint` | TriConstraintStream.`impactConfigurableBigDecimal(String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)` Positively or negatively impact the `Score` by the `ConstraintWeight` for each match.
    `default Constraint` | TriConstraintStream.`penalizeBigDecimal(String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)` Negatively impact the `Score`: subtract the constraintWeight multiplied by the match weight.
    `Constraint` | TriConstraintStream.`penalizeBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)` As defined by `TriConstraintStream.penalizeBigDecimal(String, Score, TriFunction)`.
    `Constraint` | TriConstraintStream.`penalizeConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)` As defined by `TriConstraintStream.penalizeConfigurableBigDecimal(String, TriFunction)`.
    `default Constraint` | TriConstraintStream.`penalizeConfigurableBigDecimal(String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)` Negatively impact the `Score`: subtract the `ConstraintWeight` multiplied by the match weight.
    `default Constraint` | TriConstraintStream.`rewardBigDecimal(String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)` Positively impact the `Score`: add the constraintWeight multiplied by the match weight.
    `Constraint` | TriConstraintStream.`rewardBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)` As defined by `TriConstraintStream.rewardBigDecimal(String, Score, TriFunction)`.
    `Constraint` | TriConstraintStream.`rewardConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)` As defined by `TriConstraintStream.rewardConfigurableBigDecimal(String, TriFunction)`.
    `default Constraint` | TriConstraintStream.`rewardConfigurableBigDecimal(String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)` Positively impact the `Score`: add the `ConstraintWeight` multiplied by the match weight.

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.bavet.bi

    Constructors in org.optaplanner.core.impl.score.stream.bavet.bi with parameters of type TriFunction
    Constructor and Description
    `BavetScoringBiNode(BavetConstraintSession session, int nodeOrder, String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,Consumer<Score<?>>,UndoScoreImpacter> scoreImpacter)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.bavet.tri

    Methods in org.optaplanner.core.impl.score.stream.bavet.tri with parameters of type TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `<GroupKey_> UniConstraintStream<GroupKey_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKey_> groupKeyMapping)`
    `<GroupKey_,ResultContainer_,Result_> BiConstraintStream<GroupKey_,Result_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKey_> groupKeyMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)`
    `<GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping)`
    `<GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping)`
    `<GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> TriConstraintStream<GroupKeyA_,GroupKeyB_,Result_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)`
    `<GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> TriConstraintStream<GroupKeyA_,GroupKeyB_,Result_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)`
    `<GroupKeyA_,GroupKeyB_,ResultContainerC_,ResultC_,ResultContainerD_,ResultD_> QuadConstraintStream<GroupKeyA_,GroupKeyB_,ResultC_,ResultD_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC_,ResultC_> collectorC, TriConstraintCollector<A,B,C,ResultContainerD_,ResultD_> collectorD)`
    `<GroupKeyA_,GroupKeyB_,ResultContainerC_,ResultC_,ResultContainerD_,ResultD_> QuadConstraintStream<GroupKeyA_,GroupKeyB_,ResultC_,ResultD_>` | BavetAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC_,ResultC_> collectorC, TriConstraintCollector<A,B,C,ResultContainerD_,ResultD_> collectorD)`
    `Constraint` | BavetAbstractTriConstraintStream.`impactScoreBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher, ScoreImpactType impactType)`
    `Constraint` | BavetAbstractTriConstraintStream.`impactScoreConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher, ScoreImpactType impactType)`

    Constructors in org.optaplanner.core.impl.score.stream.bavet.tri with parameters of type TriFunction
    Constructor and Description
    `BavetScoringTriConstraintStream(BavetConstraintFactory<Solution_> constraintFactory, BavetAbstractTriConstraintStream<Solution_,A,B,C> parent, BavetConstraint<Solution_> constraint, TriFunction<A,B,C,BigDecimal> bigDecimalMatchWeigher)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.bi

    Methods in org.optaplanner.core.impl.score.stream.bi that return TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `TriFunction<ResultContainer_,A,B,Runnable>` | DefaultBiConstraintCollector.`accumulator()`

    Constructors in org.optaplanner.core.impl.score.stream.bi with parameters of type TriFunction
    Constructor and Description
    `DefaultBiConstraintCollector(Supplier<ResultContainer_> supplier, TriFunction<ResultContainer_,A,B,Runnable> accumulator, Function<ResultContainer_,Result_> finisher)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.drools.bi

    Constructors in org.optaplanner.core.impl.score.stream.drools.bi with parameters of type TriFunction
    Constructor and Description
    `DroolsGroupingBiConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyMapping, TriConstraintCollector<A,B,C,__,NewB> collector)`
    `DroolsGroupingBiConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping)`
    `DroolsGroupingBiConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.drools.common

    Subinterfaces of TriFunction in org.optaplanner.core.impl.score.stream.drools.common
    Modifier and Type | Interface and Description
    --- | ---
    `protected static interface` | `DroolsCondition.Mutator<InTuple,OutPatternVar,R extends DroolsRuleStructure<OutPatternVar>,C extends DroolsCondition<OutPatternVar,R>>`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.drools.quad

    Constructors in org.optaplanner.core.impl.score.stream.drools.quad with parameters of type TriFunction
    Constructor and Description
    `DroolsGroupingQuadConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC,NewC> collectorC, TriConstraintCollector<A,B,C,ResultContainerD,NewD> collectorD)`
    `DroolsGroupingQuadConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC,NewC> collectorC, TriConstraintCollector<A,B,C,ResultContainerD,NewD> collectorD)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.drools.tri

    Methods in org.optaplanner.core.impl.score.stream.drools.tri with parameters of type TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `<NewA> DroolsUniCondition<NewA,?>` | DroolsTriCondition.`andGroup(TriFunction<A,B,C,NewA> groupKeyMapping)`
    `<NewA,NewB> DroolsBiCondition<NewA,NewB,?>` | DroolsTriCondition.`andGroupBi(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping)`
    `<NewA,NewB> DroolsBiCondition<NewA,NewB,?>` | DroolsTriCondition.`andGroupBi(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping)`
    `<NewA,NewB,NewC> DroolsTriCondition<NewA,NewB,NewC,TriTuple<NewA,NewB,NewC>>` | DroolsTriCondition.`andGroupBiWithCollect(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collector)`
    `<NewA,NewB,NewC> DroolsTriCondition<NewA,NewB,NewC,TriTuple<NewA,NewB,NewC>>` | DroolsTriCondition.`andGroupBiWithCollect(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collector)`
    `<NewA,NewB,NewC,NewD> DroolsQuadCondition<NewA,NewB,NewC,NewD,QuadTuple<NewA,NewB,NewC,NewD>>` | DroolsTriCondition.`andGroupBiWithCollectBi(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collectorC, TriConstraintCollector<A,B,C,?,NewD> collectorD)`
    `<NewA,NewB,NewC,NewD> DroolsQuadCondition<NewA,NewB,NewC,NewD,QuadTuple<NewA,NewB,NewC,NewD>>` | DroolsTriCondition.`andGroupBiWithCollectBi(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collectorC, TriConstraintCollector<A,B,C,?,NewD> collectorD)`
    `<NewA,NewB> DroolsBiCondition<NewA,NewB,BiTuple<NewA,NewB>>` | DroolsTriCondition.`andGroupWithCollect(TriFunction<A,B,C,NewA> groupKeyMapping, TriConstraintCollector<A,B,C,?,NewB> collector)`
    `List<org.drools.model.RuleItemBuilder<?>>` | DroolsTriCondition.`completeWithScoring(DroolsConstraint<?> constraint, org.drools.model.Global<? extends AbstractScoreHolder<?>> scoreHolderGlobal, TriFunction<A,B,C,BigDecimal> matchWeighter)`
    `<GroupKey_> UniConstraintStream<GroupKey_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKey_> groupKeyMapping)`
    `<GroupKey_,ResultContainer_,Result_> BiConstraintStream<GroupKey_,Result_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKey_> groupKeyMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)`
    `<GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping)`
    `<GroupKeyA_,GroupKeyB_> BiConstraintStream<GroupKeyA_,GroupKeyB_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping)`
    `<GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> TriConstraintStream<GroupKeyA_,GroupKeyB_,Result_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)`
    `<GroupKeyA_,GroupKeyB_,ResultContainer_,Result_> TriConstraintStream<GroupKeyA_,GroupKeyB_,Result_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,Result_> collector)`
    `<GroupKeyA_,GroupKeyB_,ResultContainerC_,ResultC_,ResultContainerD_,ResultD_> QuadConstraintStream<GroupKeyA_,GroupKeyB_,ResultC_,ResultD_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC_,ResultC_> collectorC, TriConstraintCollector<A,B,C,ResultContainerD_,ResultD_> collectorD)`
    `<GroupKeyA_,GroupKeyB_,ResultContainerC_,ResultC_,ResultContainerD_,ResultD_> QuadConstraintStream<GroupKeyA_,GroupKeyB_,ResultC_,ResultD_>` | DroolsAbstractTriConstraintStream.`groupBy(TriFunction<A,B,C,GroupKeyA_> groupKeyAMapping, TriFunction<A,B,C,GroupKeyB_> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainerC_,ResultC_> collectorC, TriConstraintCollector<A,B,C,ResultContainerD_,ResultD_> collectorD)`
    `Constraint` | DroolsAbstractTriConstraintStream.`impactScoreBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher, ScoreImpactType impactType)`
    `Constraint` | DroolsAbstractTriConstraintStream.`impactScoreConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher, ScoreImpactType impactType)`

    Constructors in org.optaplanner.core.impl.score.stream.drools.tri with parameters of type TriFunction
    Constructor and Description
    `DroolsGroupingTriConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,NewC> collector)`
    `DroolsGroupingTriConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,ResultContainer_,NewC> collector)`
    `DroolsScoringTriConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,BigDecimal> bigDecimalMatchWeigher)`
    `DroolsTriGroupByAccumulator(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collector, org.drools.model.Variable<A> aVariable, org.drools.model.Variable<B> bVariable, org.drools.model.Variable<C> cVariable)`
    `DroolsTriGroupByAccumulator(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collector, org.drools.model.Variable<A> aVariable, org.drools.model.Variable<B> bVariable, org.drools.model.Variable<C> cVariable)`
    `DroolsTriToBiGroupByAccumulator(TriFunction<A,B,C,NewA> groupKeyMapping, TriConstraintCollector<A,B,C,?,NewB> collector, org.drools.model.Variable<A> aVariable, org.drools.model.Variable<B> bVariable, org.drools.model.Variable<C> cVariable)`
    `DroolsTriToQuadGroupByAccumulator(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collectorC, TriConstraintCollector<A,B,C,?,NewD> collectorD, org.drools.model.Variable<A> aVariable, org.drools.model.Variable<B> bVariable, org.drools.model.Variable<C> cVariable)`
    `DroolsTriToQuadGroupByAccumulator(TriFunction<A,B,C,NewA> groupKeyAMapping, TriFunction<A,B,C,NewB> groupKeyBMapping, TriConstraintCollector<A,B,C,?,NewC> collectorC, TriConstraintCollector<A,B,C,?,NewD> collectorD, org.drools.model.Variable<A> aVariable, org.drools.model.Variable<B> bVariable, org.drools.model.Variable<C> cVariable)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.drools.uni

    Constructors in org.optaplanner.core.impl.score.stream.drools.uni with parameters of type TriFunction
    Constructor and Description
    `DroolsGroupingUniConstraintStream(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractTriConstraintStream<Solution_,A,B,C> parent, TriFunction<A,B,C,NewA> groupKeyMapping)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.quad

    Methods in org.optaplanner.core.impl.score.stream.quad that return TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `TriFunction<A,B,C,Object[]>` | SingleQuadJoiner.`getLeftCombinedMapping()`
    `TriFunction<A,B,C,Object[]>` | NoneQuadJoiner.`getLeftCombinedMapping()`
    `TriFunction<A,B,C,Object[]>` | FilteringQuadJoiner.`getLeftCombinedMapping()`
    `TriFunction<A,B,C,Object[]>` | CompositeQuadJoiner.`getLeftCombinedMapping()`
    `abstract TriFunction<A,B,C,Object[]>` | AbstractQuadJoiner.`getLeftCombinedMapping()`
    `TriFunction<A,B,C,?>` | SingleQuadJoiner.`getLeftMapping()`
    `TriFunction<A,B,C,Object>` | SingleQuadJoiner.`getLeftMapping(int index)`
    `TriFunction<A,B,C,Object>` | NoneQuadJoiner.`getLeftMapping(int index)`
    `TriFunction<A,B,C,Object>` | FilteringQuadJoiner.`getLeftMapping(int index)`
    `TriFunction<A,B,C,Object>` | CompositeQuadJoiner.`getLeftMapping(int index)`
    `abstract TriFunction<A,B,C,Object>` | AbstractQuadJoiner.`getLeftMapping(int index)`

    Constructors in org.optaplanner.core.impl.score.stream.quad with parameters of type TriFunction
    Constructor and Description
    `SingleQuadJoiner(TriFunction<A,B,C,?> leftMapping, JoinerType joinerType, Function<D,?> rightMapping)`

  - ### Uses of TriFunction in org.optaplanner.core.impl.score.stream.tri

    Methods in org.optaplanner.core.impl.score.stream.tri with parameters of type TriFunction
    Modifier and Type | Method and Description
    --- | ---
    `default Constraint` | InnerTriConstraintStream.`impactBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)`
    `default Constraint` | InnerTriConstraintStream.`impactConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)`
    `Constraint` | InnerTriConstraintStream.`impactScoreBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher, ScoreImpactType impactType)`
    `Constraint` | InnerTriConstraintStream.`impactScoreConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher, ScoreImpactType impactType)`
    `default Constraint` | InnerTriConstraintStream.`penalizeBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)`
    `default Constraint` | InnerTriConstraintStream.`penalizeConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)`
    `default Constraint` | InnerTriConstraintStream.`rewardBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher)`
    `default Constraint` | InnerTriConstraintStream.`rewardConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher)`

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