Package org.optaplanner.core.api.domain.valuerange

## Interface CountableValueRange<T>

- All Superinterfaces:
    `ValueRange<T>`
  All Known Implementing Classes:
    `AbstractCountableValueRange`, `BigDecimalValueRange`, `BigIntegerValueRange`, `BooleanValueRange`, `CompositeCountableValueRange`, `EmptyValueRange`, `IntValueRange`, `ListValueRange`, `LongValueRange`, `NullableCountableValueRange`, `TemporalValueRange`

      public interface CountableValueRange<T>
      extends ValueRange<T>

  A `ValueRange` that is ending. Therefore, it has a discrete (as in non-continuous) range.

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

  See Also:
    `ValueRangeFactory`, `ValueRange`, `AbstractCountableValueRange`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Iterator<T>` | `createOriginalIterator()` | Select the elements in original (natural) order.
    `T` | `get​(long index)` | Used by uniform random selection in a composite or nullable CountableValueRange.
    `long` | `getSize()` | Used by uniform random selection in a composite or nullable CountableValueRange.

    - ### Methods inherited from interface org.optaplanner.core.api.domain.valuerange.ValueRange

      `contains, createRandomIterator, isEmpty`

- - ### Method Detail

    - #### getSize

          long getSize()

      Used by uniform random selection in a composite or nullable CountableValueRange.
      Returns:
        the exact number of elements generated by this `CountableValueRange`, always `>= 0`

    - #### get

          T get​(long index)

      Used by uniform random selection in a composite or nullable CountableValueRange.
      Parameters:
        `index` - always `<` `getSize()`
      Returns:
        sometimes null (if `PlanningVariable.nullable()` is true)

    - #### createOriginalIterator

          Iterator<T> createOriginalIterator()

      Select the elements in original (natural) order.
      Returns:
        never null