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

- Packages that use TriFunction
  Package | Description
  --- | ---
  org.optaplanner.core.api.score.stream |
  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.common.consequences |
  org.optaplanner.core.impl.score.stream.drools.common.nodes |
  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 | Description
    --- | --- | ---
    `static <A,​B,​C> TriConstraintCollector<A,​B,​C,​?,​Integer>` | ConstraintCollectors.`countDistinct​(TriFunction<A,​B,​C,​?> groupValueMapping)` | As defined by `ConstraintCollectors.countDistinct(Function)`.
    `static <A,​B,​C> TriConstraintCollector<A,​B,​C,​?,​Long>` | ConstraintCollectors.`countDistinctLong​(TriFunction<A,​B,​C,​?> groupValueMapping)` | As defined by `ConstraintCollectors.countDistinct(Function)`.
    `static <A,​B,​C,​D,​Property_> QuadJoiner<A,​B,​C,​D>` | Joiners.`equal​(TriFunction<A,​B,​C,​Property_> leftMapping, Function<D,​Property_> rightMapping)` | Joins every (A,B,C) and D that share a property.
    `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)` | Joins every (A,B,C) and D where a value of property of (A,B,C) is greater than the value of a property of D.
    `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)` | Joins every (A,B,C) and D where a value of property of (A,B,C) is greater than or equal to the value of a property of D.
    `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)` | Joins every (A,B,C) and D where a value of property of (A,B,C) is less than the value of a property of D.
    `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)` | Joins every (A,B,C) and D where a value of property of (A,B,C) is less than or equal to the value of a property of D.
    `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,​D,​Property_ extends Comparable<Property_>> QuadJoiner<A,​B,​C,​D>` | Joiners.`overlapping​(TriFunction<A,​B,​C,​Property_> leftStartMapping, TriFunction<A,​B,​C,​Property_> leftEndMapping, Function<D,​Property_> rightStartMapping, Function<D,​Property_> rightEndMapping)` | As defined by `Joiners.overlapping(Function, Function)`.
    `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)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C> TriConstraintCollector<A,​B,​C,​?,​BigDecimal>` | ConstraintCollectors.`sumBigDecimal​(TriFunction<? super A,​? super B,​? super C,​BigDecimal> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C> TriConstraintCollector<A,​B,​C,​?,​BigInteger>` | ConstraintCollectors.`sumBigInteger​(TriFunction<? super A,​? super B,​? super C,​BigInteger> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C> TriConstraintCollector<A,​B,​C,​?,​Duration>` | ConstraintCollectors.`sumDuration​(TriFunction<? super A,​? super B,​? super C,​Duration> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C> TriConstraintCollector<A,​B,​C,​?,​Period>` | ConstraintCollectors.`sumPeriod​(TriFunction<? super A,​? super B,​? super C,​Period> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `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,​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,​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,​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,​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 | 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 | 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_,​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)`.
    `Constraint` | TriConstraintStream.`impactBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,​B,​C,​BigDecimal> matchWeigher)` | As defined by `TriConstraintStream.impactBigDecimal(String, Score, TriFunction)`.
    `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.`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.
    `Constraint` | TriConstraintStream.`penalizeBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,​B,​C,​BigDecimal> matchWeigher)` | As defined by `TriConstraintStream.penalizeBigDecimal(String, Score, TriFunction)`.
    `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.`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.
    `Constraint` | TriConstraintStream.`rewardBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,​B,​C,​BigDecimal> matchWeigher)` | As defined by `TriConstraintStream.rewardBigDecimal(String, Score, TriFunction)`.
    `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.`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 | Description
    --- | ---
    `BavetScoringBiNode​(BavetConstraintSession session, int nodeIndex, 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 | 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_,​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)` |
    `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 | 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 | Description
    --- | --- | ---
    `TriFunction<ResultContainer_,​A,​B,​Runnable>` | DefaultBiConstraintCollector.`accumulator()` |

    Constructors in org.optaplanner.core.impl.score.stream.bi with parameters of type TriFunction
    Constructor | 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 | Description
    --- | ---
    `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> groupKeyMapping, TriConstraintCollector<A,​B,​C,​__,​NewB> collector)` |

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

    Methods in org.optaplanner.core.impl.score.stream.drools.common with parameters of type TriFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `<A,​B,​C,​GroupKey_> UniConstraintGraphChildNode` | ConstraintGraph.`groupBy​(TriConstraintGraphNode parent, TriFunction<A,​B,​C,​GroupKey_> mapping)` |
    `<A,​B,​C,​GroupKey_,​ResultContainer_,​Result_> BiConstraintGraphNode` | ConstraintGraph.`groupBy​(TriConstraintGraphNode parent, TriFunction<A,​B,​C,​GroupKey_> mapping, TriConstraintCollector<A,​B,​C,​ResultContainer_,​Result_> collector)` |
    `<A,​B,​C,​GroupKeyA_,​GroupKeyB_> BiConstraintGraphNode` | ConstraintGraph.`groupBy​(TriConstraintGraphNode parent, TriFunction<A,​B,​C,​GroupKeyA_> aMapping, TriFunction<A,​B,​C,​GroupKeyB_> bMapping)` |
    `<A,​B,​C,​GroupKeyA_,​GroupKeyB_,​ResultContainer_,​Result_> TriConstraintGraphNode` | ConstraintGraph.`groupBy​(TriConstraintGraphNode parent, TriFunction<A,​B,​C,​GroupKeyA_> aMapping, TriFunction<A,​B,​C,​GroupKeyB_> bMapping, TriConstraintCollector<A,​B,​C,​ResultContainer_,​Result_> collector)` |
    `<A,​B,​C,​GroupKeyA_,​GroupKeyB_,​ResultContainerC_,​ResultC_,​ResultContainerD_,​ResultD_> QuadConstraintGraphNode` | ConstraintGraph.`groupBy​(TriConstraintGraphNode parent, TriFunction<A,​B,​C,​GroupKeyA_> aMapping, TriFunction<A,​B,​C,​GroupKeyB_> bMapping, TriConstraintCollector<A,​B,​C,​ResultContainerC_,​ResultC_> cCollector, TriConstraintCollector<A,​B,​C,​ResultContainerD_,​ResultD_> dCollector)` |
    `<A,​B,​C> TriConstraintConsequence` | ConstraintGraph.`impact​(TriConstraintGraphNode parent, TriFunction<A,​B,​C,​BigDecimal> matchWeighter)` |

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

    Methods in org.optaplanner.core.impl.score.stream.drools.common.consequences with parameters of type TriFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `static <A,​B,​C> TriConstraintConsequence` | ConstraintConsequence.`create​(TriConstraintGraphNode terminalNode, TriFunction<A,​B,​C,​BigDecimal> matchWeighter)` |

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

    Methods in org.optaplanner.core.impl.score.stream.drools.common.nodes with parameters of type TriFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `static <A,​B,​C,​GroupKey_> UniConstraintGraphChildNode` | ConstraintGraphNode.`groupBy​(TriFunction<A,​B,​C,​GroupKey_> mapping)` |
    `static <A,​B,​C,​GroupKey_,​ResultContainer_,​Result_> BiConstraintGraphNode` | ConstraintGraphNode.`groupBy​(TriFunction<A,​B,​C,​GroupKey_> mapping, TriConstraintCollector<A,​B,​C,​ResultContainer_,​Result_> collector)` |
    `static <A,​B,​C,​GroupKeyA_,​GroupKeyB_> BiConstraintGraphNode` | ConstraintGraphNode.`groupBy​(TriFunction<A,​B,​C,​GroupKeyA_> aMapping, TriFunction<A,​B,​C,​GroupKeyB_> bMapping)` |
    `static <A,​B,​C,​GroupKeyA_,​GroupKeyB_,​ResultContainer_,​Result_> TriConstraintGraphNode` | ConstraintGraphNode.`groupBy​(TriFunction<A,​B,​C,​GroupKeyA_> aMapping, TriFunction<A,​B,​C,​GroupKeyB_> bMapping, TriConstraintCollector<A,​B,​C,​ResultContainer_,​Result_> collector)` |
    `static <A,​B,​C,​GroupKeyA_,​GroupKeyB_,​ResultContainerC_,​ResultC_,​ResultContainerD_,​ResultD_> QuadConstraintGraphNode` | ConstraintGraphNode.`groupBy​(TriFunction<A,​B,​C,​GroupKeyA_> aMapping, TriFunction<A,​B,​C,​GroupKeyB_> bMapping, TriConstraintCollector<A,​B,​C,​ResultContainerC_,​ResultC_> cCollector, TriConstraintCollector<A,​B,​C,​ResultContainerD_,​ResultD_> dCollector)` |

  - ### 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 | 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)` |

  - ### 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 | Description
    --- | --- | ---
    `<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_,​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)` |
    `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 | 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)` |
    `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)` |

  - ### 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 | 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 | Description
    --- | --- | ---
    `abstract TriFunction<A,​B,​C,​Object[]>` | AbstractQuadJoiner.`getLeftCombinedMapping()` |
    `TriFunction<A,​B,​C,​Object[]>` | CompositeQuadJoiner.`getLeftCombinedMapping()` |
    `TriFunction<A,​B,​C,​Object[]>` | FilteringQuadJoiner.`getLeftCombinedMapping()` |
    `TriFunction<A,​B,​C,​Object[]>` | NoneQuadJoiner.`getLeftCombinedMapping()` |
    `TriFunction<A,​B,​C,​Object[]>` | SingleQuadJoiner.`getLeftCombinedMapping()` |
    `abstract TriFunction<A,​B,​C,​Object>` | AbstractQuadJoiner.`getLeftMapping​(int index)` |
    `TriFunction<A,​B,​C,​Object>` | CompositeQuadJoiner.`getLeftMapping​(int index)` |
    `TriFunction<A,​B,​C,​Object>` | FilteringQuadJoiner.`getLeftMapping​(int index)` |
    `TriFunction<A,​B,​C,​Object>` | NoneQuadJoiner.`getLeftMapping​(int index)` |
    `TriFunction<A,​B,​C,​?>` | SingleQuadJoiner.`getLeftMapping()` |
    `TriFunction<A,​B,​C,​Object>` | SingleQuadJoiner.`getLeftMapping​(int index)` |

    Constructors in org.optaplanner.core.impl.score.stream.quad with parameters of type TriFunction
    Constructor | 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 | 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)` |