org.optaplanner.core.api.domain.valuerange

## Interface ValueRange<T>

- All Known Subinterfaces:
    CountableValueRange<T>
  All Known Implementing Classes:
    AbstractCountableValueRange, AbstractUncountableValueRange, BigDecimalValueRange, BigIntegerValueRange, BooleanValueRange, CompositeCountableValueRange, DoubleValueRange, EmptyValueRange, IntValueRange, ListValueRange, LongValueRange, NullableCountableValueRange, TemporalValueRange

      public interface ValueRange<T>

  A ValueRange is a set of a values for a `PlanningVariable`. These values might be stored in memory as a `Collection` (usually a `List` or `Set`), but if the values are numbers, they can also be stored in memory by their bounds to use less memory and provide more opportunities.

  Prefer using `CountableValueRange` (which extends this interface) whenever possible.

  A ValueRange is stateful (unlike a `ValueSelector` which is stateless).

  Implementations must be immutable.

  An implementation must extend `AbstractCountableValueRange` or `AbstractUncountableValueRange` to ensure backwards compatibility in future versions.

  See Also:
    `ValueRangeFactory`, `CountableValueRange`, `AbstractCountableValueRange`, `AbstractUncountableValueRange`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `contains(T value)`
    `Iterator<T>` | `createRandomIterator(Random workingRandom)` Select in random order, but without shuffling the elements.
    `boolean` | `isEmpty()` In a `CountableValueRange`, this must be consistent with `CountableValueRange.getSize()`.

- - ### Method Detail

    - #### isEmpty

          boolean isEmpty()

      In a `CountableValueRange`, this must be consistent with `CountableValueRange.getSize()`.
      Returns:
        true if the range is empty

    - #### contains

          boolean contains(T value)

      Parameters:
        `value` - sometimes null
      Returns:
        true if the ValueRange contains that value

    - #### createRandomIterator

          Iterator<T> createRandomIterator(Random workingRandom)

      Select in random order, but without shuffling the elements. Each element might be selected multiple times. Scales well because it does not require caching.
      Parameters:
        `workingRandom` - never null, the `Random` to use when any random number is needed, so `EnvironmentMode.REPRODUCIBLE` works correctly. `RandomUtils` can be useful too.
      Returns:
        never null

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